python wechatpay微信支付回调_【微信支付】JSAPI支付开发者文档

XXE漏洞需要您在回调处理代码里面解析XML之前,加入禁用实体解析的代码,不同语言设置的内容不同,下面提供了几种主流开发语言的设置指引(您可以根据关键字找到xml解析组件采取对应方法升级):

【PHP】 解析XML代码前加入:

libxml_disable_entity_loader(true);//关键代码

$xml = simplexml_load_string($xmlContent);

......

【JAVA】

import javax.xml.parsers.DocumentBuilderFactory;

import javax.xml.parsers.ParserConfigurationException; // catching unsupported features

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

String FEATURE = null;

try {

// This is the PRIMARY defense. If DTDs (doctypes) are disallowed, almost all XML entity attacks are prevented

// Xerces 2 only - http://xerces.apache.org/xerces2-j/features.html#disallow-doctype-decl

FEATURE = "http://apache.org/xml/features/disallow-doctype-decl";

dbf.setFeature(FEATURE, true);

// If you can't completely disable DTDs, then at least do the following:

// Xerces 1 - http://xerces.apache.org/xerces-j/features.html#external-general-entities

// Xerces 2 - http://xerces.apache.org/xerces2-j/features.html#external-general-entities

// JDK7+ - http://xml.org/sax/features/external-general-entities

FEATURE = "http://xml.org/sax/features/external-general-entities";

dbf.setFeature(FEATURE, false);

// Xerces 1 - http://xerces.apache.org/xerces-j/features.html#external-parameter-entities

// Xerces 2 - http://xerces.apache.org/xerces2-j/features.html#external-parameter-entities

// JDK7+ - http://xml.org/sax/features/external-parameter-entities

FEATURE = "http://xml.org/sax/features/external-parameter-entities";

dbf.setFeature(FEATURE, false);

// Disable external DTDs as well

FEATURE = "http://apache.org/xml/features/nonvalidating/load-external-dtd";

dbf.setFeature(FEATURE, false);

// and these as well, per Timothy Morgan's 2014 paper: "XML Schema, DTD, and Entity Attacks"

dbf.setXIncludeAware(false);

dbf.setExpandEntityReferences(false);

// And, per Timothy Morgan: "If for some reason support for inline DOCTYPEs are a requirement, then

// ensure the entity settings are disabled (as shown above) and beware that SSRF attacks

// (http://cwe.mitre.org/data/definitions/918.html) and denial

// of service attacks (such as billion laughs or decompression bombs via "jar:") are a risk."

// remaining parser logic

} catch (ParserConfigurationException e) {

// This should catch a failed setFeature feature

logger.info("ParserConfigurationException was thrown. The feature '" +

FEATURE + "' is probably not supported by your XML processor.");

}

catch (SAXException e) {

// On Apache, this should be thrown when disallowing DOCTYPE

logger.warning("A DOCTYPE was passed into the XML document");

}

catch (IOException e) {

// XXE that points to a file that doesn't exist

logger.error("IOException occurred, XXE may still possible: " + e.getMessage());

}

DocumentBuilder safebuilder = dbf.newDocumentBuilder();

【.Net】

XmlDocument doc= new XmlDocument();

doc.XmlResolver = null;//关键代码

......

【ASP】

Set xmldom = Server.CreateObject("MSXML2.DOMDocument")

xmldom.resolveExternals = false '关键代码

......

【Python】

from lxml import etree

xmlData = etree.parse(xmlSource,etree.XMLParser(resolve_entities=False))

......

【c/c++(常用库为libxml2 libxerces-c)】 【libxml2】: 确保关闭配置选项:XML_PARSE_NOENT 和 XML_PARSE_DTDLOAD

2.9版本以上已修复XXE

【Coldfusion/lucee和node.js】

请更新到库的最新版本

【libxerces-c】:

如果用的是XercesDOMParser:

XercesDOMParser *parser = new XercesDOMParser;

parser->setCreateEntityReferenceNodes(false);

如果是用SAXParser:

SAXParser* parser = new SAXParser;

parser->setDisableDefaultEntityResolution(true);

如果是用SAX2XMLReader:

SAX2XMLReader* reader = XMLReaderFactory::createXMLReader();

parser->setFeature(XMLUni::fgXercesDisableDefaultEntityResolution, true);

附录:更多开源库/语言版本的修复建议可参考:

https://www.owasp.org/index.php/XML_External_Entity_(XXE)_Prevention_Cheat_Sheet#C.2FC.2B.2B

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/564468.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何查看oracle压力,oracle压力测试之orabm

数据库压力测试一、用orabm测试数据库CPUOrabm通过在用户指定的并发下运行指定数量的事务来测试系统性能.它主要测试数据库服务器的CPU性能和内存。orabm实际上是一堆sql的集合。orabm可以用在linux/windows/solaris下使用。orabm不一定需要运行在数据库所在服务器上&#xff0…

C++ static静态成员变量

在C中,我们可以使用静态成员变量来实现多个对象共享数据的目标。静态成员变量是一种特殊的成员变量,它被关键字static修饰,例如: class Student{ public:Student(char *name, int age, float score);void show(); public:static …

oracle河南城建学院实验报告,数据处理实验报告

化工与材料工程学院实验报告《试验设计与数据处理》上机实验报告学 生 学 号 学 生 姓 名 专 业 班 级 指 导 教 师 联合指导教师 完 成 日 期教 授 教 授 2010.5.27.第 1 章 实验一 Excel 基础及有关操作技巧1.1 实验目的熟悉 Excel 基础操作,掌握 Excel 有关操作技…

import lombok 报错_Lombok注解@Getter @Setter详解

1.为什么强大​项目中经常使用bean,entity等类,绝大部分数据类类中都需要get、set、toString、equals和hashCode方法,尽管IDE工具都会帮我们生成。但自动生成这些代码后,如果bean中的属性一旦有修改、删除或增加时,需要…

司铭宇老师:如何让企业销售培训效果落地

如何让企业销售培训效果落地 在企业销售培训中,我们经常听到一个词,那就是“落地”。所谓的“落地”,简单来说就是将培训中所学到的知识和技能转化为实际的工作行动,从而提高销售业绩。但是,如何才能让销售培训效果真…

C++ static静态成员函数

在类中,static 除了可以声明静态成员变量,还可以声明静态成员函数。普通成员函数可以访问所有成员(包括成员变量和成员函数),静态成员函数只能访问静态成员。 编译器在编译一个普通成员函数时,会隐式地增加…

php7开发的项目怎么样,如何在PHP7项目中搭建一个多线程

如何在PHP7项目中搭建一个多线程发布时间:2021-03-05 15:31:22来源:亿速云阅读:93作者:Leah这期内容当中小编将会给大家带来有关如何在PHP7项目中搭建一个多线程,文章内容丰富且以专业的角度为大家分析和叙述&#xff…

C++ const成员变量和成员函数

const成员变量 const 成员变量的用法和普通 const 变量的用法相似,只需要在声明时加上 const 关键字。初始化 const 成员变量只有一种方法,就是通过构造函数的初始化列表。 const成员函数(常成员函数) const 成员函数可以使用类…

通过日志恢复oracle序列,(存档日志包含序列84,要求序列36)怎么恢复啊?

(存档日志包含序列84,要求序列36)怎么恢复啊?SQL> startup mount;ORACLE 例程已启动Total System Global Area 135338868 bytesFixed Size 453492 bytesVariable Size 109051904 bytesDatabase Buffers 251…

C++ const对象

C 中,const 也可以用来修饰对象,称为常对象。一旦将对象定义为常对象之后,就只能调用类的 const 成员(包括 const 成员变量和 const 成员函数)了。 定义常对象的语法和定义常量的语法类似: const class …

lvs工作在第几层_LVS 原理(调度算法、四种模式、四层负载均衡和七层 的区别)...

目录lvs的调度算法lvs的四种模式四层均衡负载和七层的区别1、lvs调度算法(最常用的四种)轮叫调度(rr)调度器通过外部请求的顺序轮流分配到集群中的真实服务器上,对每台服务器都是均等的;但是这样调度器不会考虑服务器上实际的连接数和系统负载&#xff0…

linux 常用头文件,(常用头文件详解.doc

(常用头文件详解linux常用头文件详解POSIX标准定义的头文件??????? 目录项???????? 文件控制??? 文件名匹配类型??? 路径名模式匹配类型??????? 组文件??? 网络数据库操作??????? 口令文件??? 正则表达式??????? TAR归档值??…

a as as big rat_超好玩!12句英语绕口令,你能一口气读完几句?

绕口令(tongue twister)是一种语言游戏,它是将发音相同、相近等容易混淆的字组成拗口的句子,要求朗读者一口气快速念完而且不能出错,极具趣味。相信很多同学都玩过,假如绕口令也有段位划分的话,你是什么段位&#xff1…

C++ friend关键字

friend 的意思是朋友,或者说是好友,与好友的关系显然要比一般人亲密一些。我们会对好朋友敞开心扉,倾诉自己的秘密,而对一般人会谨言慎行,潜意识里就自我保护。在 C 中,这种友好关系可以用 friend 关键字指…

linux vps 运行exe文件夹,linux 64位下安装wine1.6 Windows模拟器(用来运行.exe文件) 编译安装32位wine...

cdyum groupinstall Development Tools -yyum install libX11-devel freetype-devel -ywget http://prdownloads.sourceforge.NET/wine/wine-1.6.tar.bz2tar -jvxf wine-1.6.tar.bz2cd wine-1.6编译之前先安装32位运行库不然不能编译:yum install alsa-lib-devel.i686 libsndfi…

python修改文件格式为unix_软件测试技术之如何用python在Windows系统下,生成UNIX格式文件...

本文将带你了解软件测试技术之如何用python在Windows系统下,生成UNIX格式文件,希望对大家学测试技术有所帮助如何用python在Windows系统下,生成UNIX格式文件平时测试工作中,少不了制造测试数据。最近一个项目,我就需要…

C++ class和struct的区别

C中的 struct 和 class 的区别: 1 . 使用 class 时,类中的成员默认都是 private 属性的;而使用 struct 时,结构体中的成员默认都是 public 属性的。 2 . class 继承默认是 private 继承,而 struct 继承默认是 public …

linux 宽字符串,C语言中的多字节字符与宽字符

C语言原本是在英文环境中设计的,主要的字符集是7位的ASCII码,8位的byte(字节)是最常见的字符编码单位。但是国际化软件必须能够表示不同的字符,而这些字符数量庞大,无法使用一个字节编码。C95标准化了两种表示大型字符集的方法&am…

step7db块寻址_step7 根据db地址块怎样找I/O点

楼主是想在数据块DB中查找呢还是想在FC/FB或OB块中查找呢?如果是在数据块DB中查找,打开希望查找的数据块,例如打开数据块DB9,看地址处是1940的数据就是你需要找的DB9.DBD1940。如图1所示。如果是想查找FC/FB或OB块中DB9.DBD1940这…

vue 获取元素下的所有div_vue获取dom元素高度的方法

获取高度:要在钩子mounted里面dom结构生成后去获取dom的高度,宽度,修改样式等操作!!!mounted() {let h window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight; //…