本插件作为 Java 我的项目动态代码平安审计工具,侧重于在编码过程中发现我的项目潜在的平安危险,并提供一键修复能力。
本插件利用 IDEA 原生 Inspection 机制查看我的项目,主动查看以后沉闷窗口的沉闷文件,查看速度快,占用资源少。
插件提供的规定名称均以 ”Momo“ 结尾。
版本反对
Intellij IDEA (Community / Ultimate) >= 2017.3
IDEA 香是香,可能你会说用它要免费,其实它也有开源的社区版本,免费的专业版也很容易申请到激活码,关注公众号 Java 技术栈,回复:IDEA,能够浏览我分享过的获取正版 IDEA 激活码的教程,很多粉丝都反馈说轻松失去了,感兴趣的都能够去申请,不能太容易了。
装置应用
IDEA 插件市场搜寻 ”immomo“ 装置。
成果展现
演示一:XXE 破绽发现与一键修复
演示二: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
预公布打包
- PLUGIN_BAN_CONST=true ./gradlew –no-daemon clean build -PMOMO_CODE_SEC_INSPECTOR_ENV=pre
- build/distributions/*.zip 为待发布插件
预公布状况下,插件上报地址写于src/main/resources/properties/pre.properties
公布打包
- PLUGIN_BAN_CONST=true ./gradlew –no-daemon clean build -PMOMO_CODE_SEC_INSPECTOR_ENV=prod
- build/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.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 开发手册(嵩山版)》最新公布,速速下载!
感觉不错,别忘了顺手点赞 + 转发哦!