本插件作为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
1003Mybatis注解SQL注入破绽TT
1004Mybatis XML SQL注入破绽TT
1005RegexDos危险TT
1006Jackson反序列化危险TT
1007Fastjson反序列化危险TT
1008Netty响应拆分攻打TT
1009固定的随机数种子危险TT
1010XXE破绽TT
1011XStream反序列化危险TT
1014软弱的音讯摘要算法T
1015过期的加密规范T
1016XMLDecoder反序列化危险T
1017LDAP反序列化危险TT
1018宽泛的CORS Allowed Origin设置T
1019SpringSecurity敞开Debug模式TT
1020硬编码凭证危险T
1021"@RequestMapping" 办法该当为 "public"TT
1022Spring 会话固定攻打危险TT
1023不平安的伪随机数生成器TT
1024OpenSAML2 认证绕过危险TT
1025IP地址硬编码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.properties

公布打包

  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.properties

注意事项

  • 分支命名规定:

以版本号命名的分支,原则上代表反对的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.31932018.3.* <= x
2017.31732017.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开发手册(嵩山版)》最新公布,速速下载!

感觉不错,别忘了顺手点赞+转发哦!