zoukankan      html  css  js  c++  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/momo-code-sec-inspector-java

    近期热文推荐:

    1.Java 15 正式发布, 14 个新特性,刷新你的认知!!

    2.终于靠开源项目弄到 IntelliJ IDEA 激活码了,真香!

    3.我用 Java 8 写了一段逻辑,同事直呼看不懂,你试试看。。

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

    5.《Java开发手册(嵩山版)》最新发布,速速下载!

    觉得不错,别忘了随手点赞+转发哦!

  • 相关阅读:
    课堂派题库格式转换程序
    操作系统——进程的状态与转换
    android 通用 Intent
    android上使用蓝牙设备进行语音输入
    讯飞语音听写中数字规整问题
    【Android】隐藏底部虚拟按键
    AudioEffect中文API
    为什么要在onNewIntent的时候要显示的去调用setIntent
    android蓝牙耳机下的语音(输入/识别)及按键监听
    Android如何监听蓝牙耳机的按键事件
  • 原文地址:https://www.cnblogs.com/javastack/p/14402688.html
Copyright © 2011-2022 走看看