
最近比较□□□□火的是微□□丨信支付◈接□□口存在XML外部实体□□□注入漏洞(XML External Entity Injection,简称 XXE)。该安全问□□题是由XML组件默认◢没有禁用□□□□外部实体□□引用导致,黑客可以△伪造一个□□□请求让支□□付商户误□□□以为订单•支付了,其实订单▽并没有支◥付,这样黑客□□□就可以0元买任何♦商品。
这个漏洞❖是在微信□□支付接口▽通知是否□□□支付的环□□□□节出现漏·洞。主要发生□□□在以下场◢景。
场景1:支付成功□□□通知;
场景2:退款成功❖通知;
场景3:委托代扣□□签约、解约、扣款通知;
场景4:车主解约□□□通知;
这个漏洞□□□□影响性还□□是蛮大的,可以直接□□□导致商家□□□□金钱损失,尤其是有○微信支付□□□功能模块□□□的自动发□□□丨货的系□□□统●及销售虚□□□拟商品的◈商城。
黑客能利※用这个漏□□洞的条件□□有两个:
一、知道怎么□□□□使用XML外部实体□□□注入漏洞;(因为漏洞※已经被公□□□开,大家都知□□□□道,可恨的是□□□很多人把□□□□攻击的方□□□□式都公开□□了!!!!)
二、知道微信支付通知的地址;(这个开源建站系统因为源代码是公开的,所以基本不用猜都知道,而定制建站系统则比较难猜,所以定制建站系统还有一层防护)
所以对于开源建站系统,源代码大家都知道,微信支付通知的地址自然是清楚了,这也暴露了很多开源建站系统的软肋,J9国际集团□□□□建议:做网站还是建议□□□采用定制❖建站,就算出现□□□□漏洞,因为代码□□□不开源,所以自然□□□□而然多一□□□□重安全保□□□障。
这个漏洞□□□□如何修补☆呢?
如果是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 不受影响,主要还是●网站。
如果你是□□□□商家,这个漏洞□□□还没有修◉复,建议财务□□□□对每一笔□□□□订单进行□□二次审核,通过登录□□微信支付□□□管理后台□□查看订单□□数据,再次审核•订单支付※是否真实□□□来决定是□□否发货。
如果你是□□□J9国际集团□□□的客户,那么你不□□□□用担心,我们技术□□会免费为□□□□你修补这□□□个漏洞。
J9国际集团□□□专注于网◤站建设、微信小程□□□□序、APP开发,目前在深圳和广州均·有分公司,欢迎广大□□□客户咨询135-2716-3909!