400-800-9385
網站建設資訊詳細

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

發表日期:2018-07-06 09:01:29   作者來(lái)源:方維網絡   浏覽:4873   标簽:微信支付接口    

微信支付接口安全漏洞

最近比較火的(de)是微信支付接口存在XML外部實體注入漏洞(XML External Entity Injection,簡稱 XXE)。該安全問題是由XML組件默認沒有禁用(yòng)外部實體引用(yòng)導緻,黑(hēi)客可(kě)以僞造一個(gè)請求讓支付商戶誤以爲訂單支付了(le),其實訂單并沒有支付,這(zhè)樣黑(hēi)客就可(kě)以0元買任何商品。

這(zhè)個(gè)漏洞是在微信支付接口通(tōng)知是否支付的(de)環節出現漏洞。主要發生在以下(xià)場(chǎng)景。

場(chǎng)景1:支付成功通(tōng)知;
場(chǎng)景2:退款成功通(tōng)知;
場(chǎng)景3:委托代扣簽約、解約、扣款通(tōng)知;
場(chǎng)景4:車主解約通(tōng)知;

這(zhè)個(gè)漏洞影(yǐng)響性還(hái)是蠻大(dà)的(de),可(kě)以直接導緻商家金錢損失,尤其是有微信支付功能模塊的(de)自動發貨的(de)系統及銷售虛拟商品的(de)商城(chéng)。

黑(hēi)客能利用(yòng)這(zhè)個(gè)漏洞的(de)條件有兩個(gè):

一、知道怎麽使用(yòng)XML外部實體注入漏洞;(因爲漏洞已經被公開,大(dà)家都知道,可(kě)恨的(de)是很多(duō)人(rén)把攻擊的(de)方式都公開了(le)!!!!)
二、知道微信支付通(tōng)知的(de)地址;(這(zhè)個(gè)開源建站系統因爲源代碼是公開的(de),所以基本不用(yòng)猜都知道,而定制建站系統則比較難猜,所以定制建站系統還(hái)有一層防護)

所以對(duì)于開源建站系統,源代碼大(dà)家都知道,微信支付通(tōng)知的(de)地址自然是清楚了(le),這(zhè)也(yě)暴露了(le)很多(duō)開源建站系統的(de)軟肋,方維網絡建議(yì):做(zuò)網站還(hái)是建議(yì)采用(yòng)定制建站,就算(suàn)出現漏洞,因爲代碼不開源,所以自然而然多(duō)一重安全保障。

這(zhè)個(gè)漏洞如何修補呢(ne)?

如果是PHP網站,非常簡單,一句話(huà)解決libxml_disable_entity_loader(true);

如下(xià)代碼示例:

//将XML轉爲array
function xmlToArray($xml) {
    //禁止引用(yòng)外部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;

微信官方也(yě)給每個(gè)商戶推送了(le)這(zhè)個(gè)接口安全漏洞,也(yě)給出了(le)各個(gè)程序語言的(de)修複方法,APP SDK 不受影(yǐng)響,主要還(hái)是網站。

如果你是商家,這(zhè)個(gè)漏洞還(hái)沒有修複,建議(yì)财務對(duì)每一筆訂單進行二次審核,通(tōng)過登錄微信支付管理(lǐ)後台查看訂單數據,再次審核訂單支付是否真實來(lái)決定是否發貨。

如果你是方維網絡的(de)客戶,那麽你不用(yòng)擔心,我們技術會免費爲你修補這(zhè)個(gè)漏洞。

方維網絡專注于網站建設、微信小程序、APP開發,目前在深圳和(hé)廣州均有分(fēn)公司,歡迎廣大(dà)客戶咨詢400-800-9385!

如沒特殊注明(míng),文章(zhāng)均爲方維網絡原創,轉載請注明(míng)來(lái)自