微信支付接口存在XML解析安全漏洞

发布时间:2024-05-26 点击:187
最近比较火的是微信支付接口存在xml外部实体注入漏洞(xml external entity injection,简称 xxe)。该安全问题是由xml组件默认没有禁用外部实体引用导致,黑客可以伪造一个请求让支付商户误以为订单支付了,其实订单并没有支付,这样黑客就可以0元买任何商品。
这个漏洞是在微信支付接口通知是否支付的环节出现漏洞。主要发生在以下场景。
场景1:支付成功通知;
场景2:退款成功通知;
场景3:委托代扣签约、解约、扣款通知;
场景4:车主解约通知;
这个漏洞影响性还是蛮大的,可以直接导致商家金钱损失,尤其是有微信支付功能模块的自动发货的系统及销售虚拟商品的商城。
黑客能利用这个漏洞的条件有两个:
一、知道怎么使用xml外部实体注入漏洞;(因为漏洞已经被公开,大家都知道,可恨的是很多人把攻击的方式都公开了!!!!)
二、知道微信支付通知的地址;(这个开源建站系统因为源代码是公开的,所以基本不用猜都知道,而定制建站系统则比较难猜,所以定制建站系统还有一层防护)

这个漏洞如何修补呢?
如果是php网站,非常简单,一句话解决libxml_disable_entity_loader(true);
如下代码示例:
//将xml转为array
function xmltoarray($xml) {
//禁止引用外部xml实体 libxml_disable_entity_loader(true);
$values = json_decode(json_encode(simplexml_load_string($xml, 'simplexmlelement', libxml_nocdata)), true);
return $values;
}
如果是asp.net网站
【.net】
xmldocument doc= new xmldocument();
doc.xmlresolver = null;
微信官方也给每个商户推送了这个接口安全漏洞,也给出了各个程序语言的修复方法,app sdk 不受影响,主要还是网站。
如果你是商家,这个漏洞还没有修复,建议财务对每一笔订单进行二次审核,通过登录微信支付管理后台查看订单数据,再次审核订单支付是否真实来决定是否发货。




做好前期工作和设计让建站效果更出众
解析站内该如何优化呢?
营销型网站应该如何进行更新文章
网站建设与SEO优化的关系
浅析网络模式下五大行业域名的“千万”身价
租用香港站群服务器注意事项有哪些?
提高网站用户体验度是每个企业建站时必须要考虑的问题
如何区分三个不同类型的关键词?