常用的idea插件(一款牛逼的IDEA插件)

前言

本插件作为Java项目静态代码安全审计工具,侧重于在编码过程中发现项目潜在的安全风险,并提供一键修复能力。

本插件利用idea原生Inspection机制检查项目,自动检查当前活跃窗口的活跃文件,检查速度快,占用资源少。

插件提供的规则名称均以"Momo"开头。

常用的idea插件(一款牛逼的IDEA插件)(1)

版本支持

Intellij IDEA ( Community / Ultimate ) >=2017.3

IDEA香是香,可能你会说用它要收费,其实它也有开源的社区版本,收费的专业版也很容易申请到激活码。

安装使用

IDEA插件市场搜索"immomo"安装。

常用的idea插件(一款牛逼的IDEA插件)(2)

效果展示

演示一:XXE漏洞发现与一键修复

常用的idea插件(一款牛逼的IDEA插件)(3)

演示二:Mybatis XML Mapper SQL注入漏洞发现与一键修复

常用的idea插件(一款牛逼的IDEA插件)(4)

插件规则

编号规则名称修复建议一键修复1001多项式拼接型SQL注入漏洞T1002占位符拼接型SQL注入漏洞T1003Mybatis注解SQL注入漏洞TT1004Mybatis XML SQL注入漏洞TT1005RegexDos风险TT1006Jackson反序列化风险TT1007Fastjson反序列化风险TT1008Netty响应拆分攻击TT1009固定的随机数种子风险TT1010XXE漏洞TT1011XStream反序列化风险TT1014脆弱的消息摘要算法T1015过时的加密标准T1016XMLDecoder反序列化风险T1017LDAP反序列化风险TT1018宽泛的CORS Allowed Origin设置T1019SpringSecurity关闭Debug模式TT1020硬编码凭证风险T1021"@RequestMapping" 方法应当为 "public"TT1022Spring 会话固定攻击风险TT1023不安全的伪随机数生成器TT1024OpenSAML2 认证绕过风险TT1025IP地址硬编码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.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版本

发布到插件市场的版本不支持漏洞上报功能。

发布到插件市场的版本不支持白名单签名下发功能。

最后源码、项目地址、获取方式:关注小编 转发文章 私信【555】免费获取

附赠福利:

另外整理成了40多套PDF文档:全套的Java面试宝典手册1000 pdf

1.编程 开源框架 分布式”等七大面试专栏

2.Java核心知识点1000 Java面试题合集pdf

3.阿里、京东、蚂蚁等大厂面试真题解析

4.Spring全家桶面试题

5.算法笔记文档 刷题手册

6.思维导图(jvm、mysql、并发编程、数据库、kafka等等)。

如果你对这个感兴趣,小编可以免费分享。重要的事情说三遍,转发 转发 转发,一定要记得点赞转发哦!!!

常用的idea插件(一款牛逼的IDEA插件)(5)

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页