Java Agent 機制
JDK1.5開始引入了Agent機制(即啟動java程序時添加
-javaagent參數”,如java -javaagent:/data/test.jar LingXeTest),Java Agent機制允許用戶在JVM加載class文件的時候先加載自己編寫的Agent文件,通過修改JVM傳入的字節碼來實現注入RASP防御邏輯。這種方式因為必須是在容器啟動時添加jvm參數,所以需要重啟Web容器。JDK1.6新增了attach方式(agentmain),可以對運行中的java進程附加agent。使用附加的方式可以在容器運行時動態的注入RASP防御邏輯。
使用在應用啟動時加入-javaagent參數的方式適用于RASP常駐用戶應用的防御方式,也是我們目前最常用的安裝集成方式。但是正因為必須在應用程序啟動時加上我們自定義的-javaagent參數所以也就會不得不要求用戶重啟Web容器,一些生產環境的服務是不允許停止的,所以重啟問題成了其重大阻礙。
為了解決應用重啟問題,我使用了attach靈蜥Agent到Java進程的方式來實現防御,當然attach和agent方式并無太大的差異,只是實現方式會有細微的差別,麻煩的是attach需要考慮如何避免重復加載、如何完整的卸載等問題。
Java Web安全
推薦文章: