本外掛作為Java專案靜態程式碼安全審計工具,側重於在編碼過程中發現專案潛在的安全風險,並提供一鍵修復能力。
本外掛利用IDEA原生Inspection機制檢查專案,自動檢查當前活躍視窗的活躍檔案,檢查速度快,佔用資源少。
外掛提供的規則名稱均以"Momo"開頭。
版本支援Intellij IDEA ( Community / Ultimate ) >= 2017.3
IDEA 香是香,可能你會說用它要收費,其實它也有開源的社群版本,收費的專業版也很容易申請到啟用碼。
安裝使用IDEA外掛市場搜尋"immomo"安裝。
效果展示演示一:XXE漏洞發現與一鍵修復
演示二:Mybatis XML Mapper SQL注入漏洞發現與一鍵修復
專案結構src├── main│ ├── java│ │ └── com│ │ └── immomo│ │ └── momosec│ │ ├── aspect│ │ ├── entity│ │ ├── fix│ │ ├── lang│ │ │ ├── java│ │ │ │ ├── rule│ │ │ │ │ └── momosecurity│ │ │ │ │ └── {InspectionName}.java│ │ │ │ └── utils│ │ │ └── xml│ │ │ └── rule│ │ │ └── momosecurity│ │ │ └── {InspectionName}.java│ │ └── utils│ └── resources│ ├── META-INF│ │ ├── description.html│ │ ├── pluginIcon.svg│ │ └── plugin.xml│ └── inspectionDescriptions│ └── {InspectionName}.html└── test ├── java │ └── com │ └── immomo │ └── momosec │ └── lang │ ├── java │ │ ├── fix │ │ └── rule │ │ └── momosecurity │ │ └── {InspectionName}Test.java │ └── xml │ └── rule │ └── momosecurity │ └── {InspectionName}Test.java ├── resources └── testData └── lang ├── java │ └── rule │ └── momosecurity │ └── {InspectionName} │ └──... └── xml └── rule └── momosecurity └── {InspectionName} └──...
腳手架# 新增檢查規則> python script/addInspection.py# 刪除檢查規則> python script/deleteInspection.py
單元測試
> ./gradlew :test
預釋出打包PLUGIN_BAN_CONST=true ./gradlew --no-daemon clean build -PMOMO_CODE_SEC_INSPECTOR_ENV=prebuild/distributions/*.zip 為待發布外掛
預釋出情況下,外掛上報地址寫於src/main/resources/properties/pre.properties
釋出打包PLUGIN_BAN_CONST=true ./gradlew --no-daemon clean build -PMOMO_CODE_SEC_INSPECTOR_ENV=prodbuild/distributions/*.zip 為待發布外掛正式釋出情況下,外掛上報地址寫於src/main/resources/properties/prod.properties
注意事項分支命名規則:以版本號命名的分支,原則上代表支援的idea版本下限。
如branch為2018.3代表當前分支支援版本範圍是>=2018.3 (或說from 183.* to *)。
外掛具體支援idea版本範圍見gradle.properties中idea_since_build與idea_until_build部分。
外掛版本號命名規則:原則上,外掛版本號以支援的idea版本下限為大版本編號。
如外掛當前版本為x.1,x為開發時所用IDEA版本編號,.1為外掛釋出版本。
需要注意的是,因IDEA更新機制問題,外掛新版本號只能向上增長。
具體見gradle.properties的plugin_version欄位。
版本號對應關係分支名外掛版本IDEA版本2018.31932018.3.* <= x2017.31732017.3.* <= x <= 2018.2.*
JetBrains Plugins Marketplace 版本釋出到外掛市場的版本不支援漏洞上報功能。
釋出到外掛市場的版本不支援白名單簽名下發功能。
開源地址:https://gitee.com/mirrors/momo-code-sec-inspector-java