XXE修复方案参考

XXE修复方案参考XXE不同的库修复代码,略有差别,但都是通过:1、禁止加载外部实体;2、不允许XML中含有任何自己声明的DTD。可以解决

大家好,又见面了,我是你们的朋友全栈君。

XXE不同的库修复代码,略有差别,但都是通过:

1、禁止加载外部实体;
2、不允许XML中含有任何自己声明的DTD。可以解决


    例1: //DOM Read XML
            DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();     
            
            /*以下为修复代码*/ 
            //https://www.owasp.org/index.php/XML_External_Entity_(XXE)_Prevention_Cheat_Sheet#Java
        
            //禁用DTDs (doctypes),几乎可以防御所有xml实体攻击
            dbf.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true); //首选
            
            //如果不能禁用DTDs,可以使用下两项,必须两项同时存在
            dbf.setFeature("http://xml.org/sax/features/external-general-entities", false);        //防止外部实体POC 
            dbf.setFeature("http://xml.org/sax/features/external-parameter-entities", false);   //防止参数实体POC
            /*以上为修复代码*/    
            
            DocumentBuilder db = dbf.newDocumentBuilder();        
            Document doc = db.parse(request.getInputStream());
例2:    //DOM4J Read XML
            SAXReader saxReader = new SAXReader();
                    
            /*以下为修复代码*/ 
            //https://www.owasp.org/index.php/XML_External_Entity_(XXE)_Prevention_Cheat_Sheet#Java
        
            //禁用DTDs (doctypes),几乎可以防御所有xml实体攻击
            saxReader.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true); //首选
            
            //如果不能禁用DTDs,可以使用下两项,必须两项同时存在
            saxReader.setFeature("http://xml.org/sax/features/external-general-entities", false);        //防止外部实体POC 
            saxReader.setFeature("http://xml.org/sax/features/external-parameter-entities", false);   //防止参数实体POC
            /*以上为修复代码*/    
            
            Document document = saxReader.read(request.getInputStream());


例3:   //JDOM2 Read XML    
            SAXBuilder builder = new SAXBuilder();    
            
            /*以下为修复代码*/ 
            //https://www.owasp.org/index.php/XML_External_Entity_(XXE)_Prevention_Cheat_Sheet#Java
        
            //禁用DTDs (doctypes),几乎可以防御所有xml实体攻击
            builder.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true); //首选
            
            //如果不能禁用DTDs,可以使用下两项,必须两项同时存在
            builder.setFeature("http://xml.org/sax/features/external-general-entities", false);        //防止外部实体POC 
            builder.setFeature("http://xml.org/sax/features/external-parameter-entities", false);   //防止参数实体POC
            /*以上为修复代码*/    
            
            
            Document document = builder.build(request.getInputStream());
例4:        //SAX Read XML
            SAXParserFactory factory  = SAXParserFactory.newInstance(); 
                    
            /*以下为修复代码*/ 
            //https://www.owasp.org/index.php/XML_External_Entity_(XXE)_Prevention_Cheat_Sheet#Java
        
            //禁用DTDs (doctypes),几乎可以防御所有xml实体攻击
            factory.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true); //首选
            
            //如果不能禁用DTDs,可以使用下两项,必须两项同时存在
            factory.setFeature("http://xml.org/sax/features/external-general-entities", false);        //防止外部实体POC 
            factory.setFeature("http://xml.org/sax/features/external-parameter-entities", false);   //防止参数实体POC
            /*以上为修复代码*/    
            
            
            SAXParser saxparser = factory.newSAXParser();  
            SAXHandler handler = new SAXHandler();      
            saxparser.parse(request.getInputStream(), handler); 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/142448.html原文链接:https://javaforall.net

(0)
上一篇 2022年5月23日 下午7:20
下一篇 2022年5月23日 下午7:20


相关推荐

  • Pycharm项目生成可执行exe文件(Windows版)

    Pycharm项目生成可执行exe文件(Windows版)Python 生成 Windows 可执行 exe 文件 Pycharm 生成 exe 程序 一个项目开发完毕后总有一种想法 就是生成可执行文件 总不能一直用 pythonxxx 执行吧 以下操作同时适用于 windows 和 Linux 下的 Pycharm 我在 Ubuntu 下试验过 生成的是在 Ubuntu 下的可执行文件 1 打开 Pycharm 2 打开 Terminal 快捷键 Alt F12 3 安装 pyinstaller 工具输入 pipinstallpy 生成本项目可执行文件 Termi

    2026年3月27日
    2
  • 迁移学习之ResNet50和ResNet101(图像识别)

    迁移学习之ResNet50和ResNet101(图像识别)文章目录1.实现的效果:2.主文件TransorResNet.py:1.实现的效果:实际的图片:(1)可以看到ResNet50预测的前三个结果中第一个结果为:whippet(小灵狗)(2)ResNet50预测的前三个结果中第一个结果为:Walker_hound(步行猎犬)(3)**从结果上来看,比之前的VGG16和VGG19预测的效果都要好(这里虽然不知道图片中的够具体是什么狗,但是结果都预测成了“狗”的类别)。**2.主文件TransorResNet.py:importosimpo

    2022年10月7日
    5
  • Kali-linux :arping命令

    Kali-linux :arping命令ARP协议是“AddressResolutionProtocol”(地址解析协议)的缩写。在同一以太网中,通过地址解析协议,源主机可以通过目的主机的IP地址获得目的主机的MAC地址。arping程序就是完成上述过程的程序。arping,用来向局域网内的其它主机发送ARP请求的指令,它可以用来测试局域网内的某个IP是否已被使用。root@pgg:/home/pgg#arping–helpARPing2.21,byThomasHabetsthomas@habets.seusage:

    2022年5月7日
    50
  • OPNsense – 多功能高可靠易使用的防火墙(二)

    OPNsense的安装和使用(二)内容列表基本设置证书颁发机构(CA)管理证书管理授权管理系统软件管理其他管理将会被设置的内容基本设置代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键基本设置这是首次进入配置模式时才能见到的欢迎页面,然后就会进入设置过程。为能方便…

    2022年4月6日
    55
  • Kibana中KQL的使用

    Kibana中KQL的使用文章目录前言筛选语法简单查询条件运算符逻辑运算符通配符字段嵌套查询总结可能排版更好看一点的原博链接 Kibana 中 KQL 的使用前言当我们需要查看 ElasticSearc 中存放的数据时 通常会使用 Kibana 这个可视化工具 但是 Kibana 中的 Discover 页面默认只会展示最近收到的数据 当我们需要查询符合某个条件数据时 就需要用到 KQL KibanaQueryL 了 没有接触之前觉得高大上 看完之后才发现设计如此简单 英文还可以的同学可以直接看官方文档 结

    2026年3月17日
    2
  • 低噪声放大器

    常用于无线电接收机前端,其作用是提高接收机的灵敏度基本性能指标工作频率可以做到0.1~26.5GHz,超过8倍频程噪声系数噪声系数(F)描述信号通过低噪声放大器时的信噪比的变化,定义为输入信噪比(Si/Ni)和输出信噪比(So/No)之比所有器件都会附带热噪声,所有信号经过放大器后信噪比必然会恶化,所以F必然大于1,如果用分贝表示则为正数对于二级串联的放大…

    2022年4月9日
    40

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号