發現一款牛逼的 IDEA 插件:檢測代碼漏洞,一鍵修復!

本插件做爲Java項目靜態代碼安全審計工具,側重於在編碼過程當中發現項目潛在的安全風險,並提供一鍵修復能力。html

本插件利用IDEA原生Inspection機制檢查項目,自動檢查當前活躍窗口的活躍文件,檢查速度快,佔用資源少。java

插件提供的規則名稱均以"Momo"開頭。python

版本支持

Intellij IDEA ( Community / Ultimate ) >= 2017.3git

IDEA 香是香,可能你會說用它要收費,其實它也有開源的社區版本,收費的專業版也很容易申請到激活碼,關注公衆號Java技術棧,回覆:IDEA,能夠閱讀我分享過的獲取正版 IDEA 激活碼的教程,不少粉絲都反饋說輕鬆獲得了,感興趣的均可以去申請,不能太容易了。算法

安裝使用

IDEA插件市場搜索"immomo"安裝。spring

效果展現

演示一:XXE漏洞發現與一鍵修復json

演示二:Mybatis XML Mapper SQL注入漏洞發現與一鍵修復安全

插件規則

編號 規則名稱 修復建議 一鍵修復
1001 多項式拼接型SQL注入漏洞 T
1002 佔位符拼接型SQL注入漏洞 T
1003 Mybatis註解SQL注入漏洞 T T
1004 Mybatis XML SQL注入漏洞 T T
1005 RegexDos風險 T T
1006 Jackson反序列化風險 T T
1007 Fastjson反序列化風險 T T
1008 Netty響應拆分攻擊 T T
1009 固定的隨機數種子風險 T T
1010 XXE漏洞 T T
1011 XStream反序列化風險 T T
1014 脆弱的消息摘要算法 T
1015 過期的加密標準 T
1016 XMLDecoder反序列化風險 T
1017 LDAP反序列化風險 T T
1018 寬泛的CORS Allowed Origin設置 T
1019 SpringSecurity關閉Debug模式 T T
1020 硬編碼憑證風險 T
1021 "@RequestMapping" 方法應當爲 "public" T T
1022 Spring 會話固定攻擊風險 T T
1023 不安全的僞隨機數生成器 T T
1024 OpenSAML2 認證繞過風險 T T
1025 IP地址硬編碼 T

項目結構

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

預發佈打包

  1. PLUGIN_BAN_CONST=true ./gradlew --no-daemon clean build -PMOMO_CODE_SEC_INSPECTOR_ENV=pre
  2. build/distributions/*.zip 爲待發布插件

預發佈狀況下,插件上報地址寫於src/main/resources/properties/pre.propertiesintellij-idea

發佈打包

  1. PLUGIN_BAN_CONST=true ./gradlew --no-daemon clean build -PMOMO_CODE_SEC_INSPECTOR_ENV=prod
  2. build/distributions/*.zip 爲待發布插件

正式發佈狀況下,插件上報地址寫於src/main/resources/properties/prod.propertiesapp

注意事項

  • 分支命名規則:

以版本號命名的分支,原則上表明支持的idea版本下限。

如branch爲2018.3表明當前分支支持版本範圍是>=2018.3 (或說from 183. to )。

插件具體支持idea版本範圍見gradle.propertiesidea_since_buildidea_until_build部分。

  • 插件版本號命名規則:

原則上,插件版本號以支持的idea版本下限爲大版本編號。

如插件當前版本爲x.1x爲開發時所用IDEA版本編號,.1爲插件發佈版本。

須要注意的是,因IDEA更新機制問題,插件新版本號只能向上增加

具體見gradle.propertiesplugin_version字段。

  • 版本號對應關係
分支名 插件版本 IDEA版本
2018.3 193 2018.3.* <= x
2017.3 173 2017.3. <= x <= 2018.2.
  • JetBrains Plugins Marketplace 版本

發佈到插件市場的版本不支持漏洞上報功能。

發佈到插件市場的版本不支持白名單簽名下發功能。

開源地址:https://gitee.com/mirrors/mom...

近期熱文推薦:

1.Java 15 正式發佈, 14 個新特性,刷新你的認知!!

2.終於靠開源項目弄到 IntelliJ IDEA 激活碼了,真香!

3.我用 Java 8 寫了一段邏輯,同事直呼看不懂,你試試看。。

4.吊打 Tomcat ,Undertow 性能很炸!!

5.《Java開發手冊(嵩山版)》最新發布,速速下載!

以爲不錯,別忘了隨手點贊+轉發哦!

相關文章
相關標籤/搜索