原生JS appendChild veracode XSS (CWE ID 80)

原生JavaScript中的appendChild()方法可能會(huì)觸發(fā)Veracode的XXS(跨站腳本攻擊)檢查,如果你在使用這個(gè)方法時(shí)插入了來自不可信來源的、未經(jīng)適當(dāng)處理的字符串或DOM元素。為了解決這個(gè)問題,你應(yīng)該確保所有插入到DOM中的內(nèi)容都經(jīng)過適當(dāng)?shù)那逑春娃D(zhuǎn)義,以防止XSS攻擊。

解決方法:

對(duì)于字符串類型的內(nèi)容,使用textContent或者innerHTML之前,對(duì)字符串進(jìn)行轉(zhuǎn)義處理。

vardiv =document.createElement('div');

div.textContent= escapeHTML(userInput);// 用戶輸入需要轉(zhuǎn)義

document.body.appendChild(div);

functionescapeHTML(str) {

returnstr.replace(/&/g,'&')

.replace(/</g,'&lt;')

.replace(/>/g,'&gt;')

.replace(/"/g,'&quot;')

.replace(/'/g,'&#039;');

}

對(duì)于動(dòng)態(tài)創(chuàng)建的DOM元素,可以先在內(nèi)存中創(chuàng)建并操作,然后再一次性地添加到文檔中,以減少跨站腳本攻擊的機(jī)會(huì)。

varfrag =document.createDocumentFragment();

vardiv =document.createElement('div');

div.textContent='安全的文本內(nèi)容';

frag.appendChild(div);

document.body.appendChild(frag);

如果你使用的是innerHTML,盡量不要直接將變量插入到這個(gè)屬性中,而是使用createElement和appendChild來構(gòu)建DOM。

總結(jié),要解決Veracode關(guān)于appendChild()的XXS問題,你需要確保所有插入到DOM中的內(nèi)容都是經(jīng)過清洗和轉(zhuǎn)義的,以防止XSS攻擊。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 第一章 1.什么是DOM DOM: Document Object Model(文檔對(duì)象模型) 是JavaScri...
    fastwe閱讀 886評(píng)論 0 0
  • BOM DOM BOM 概述: BOM 瀏覽器對(duì)象模型,對(duì)于路由的底層就是bom 六大對(duì)象 window 全局對(duì)象...
    又吃鍋包肉閱讀 299評(píng)論 0 0
  • Javascript操作DOM常用API總結(jié) Posted on 2015-11-30 | In Ja...
    stephenoo閱讀 301評(píng)論 0 0
  • 原文鏈接JavaScript原生匯總[https://b...
    未來仍可期閱讀 797評(píng)論 0 0
  • 插件的需求 我們寫代碼,并不是所有的業(yè)務(wù)或者邏輯代碼都要抽出來復(fù)用。首先,我們得看一下是否需要將一部分經(jīng)常重復(fù)的代...
    心淡然如水閱讀 410評(píng)論 0 0

友情鏈接更多精彩內(nèi)容