乐趣区

关于java:发现一款牛逼的-IDEA-插件检测代码漏洞一键修复

本插件作为 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

预公布打包

  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.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 开发手册(嵩山版)》最新公布,速速下载!

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

退出移动版