有的時候頁面中會有一個輸入框,用戶輸入內(nèi)容后會顯示在頁面中,類似于網(wǎng)頁聊天應(yīng)用。如果用戶輸入了一段js腳本,比例: script alert( test /script ,頁面會彈出一個對話框,或者輸入的腳本中有改變頁面js變量的代碼則會時程序異常或者達(dá)到跳過某種驗(yàn)證的目的。那如何防止這種惡意的js腳本攻擊呢?通過html轉(zhuǎn)義能解決這個問題。
一:什么是html轉(zhuǎn)義?
html轉(zhuǎn)義是將特殊字符或html標(biāo)簽轉(zhuǎn)換為與之對應(yīng)的字符。如: 會轉(zhuǎn)義為 或轉(zhuǎn)義為 像“ script alert( test /script ”這段字符會轉(zhuǎn)義為:“ script alert( test /script ”再顯示時頁面會將 解析為 , 解析為 ,從而還原了用戶的真實(shí)輸入,最終顯示在頁面上 的還是“ script alert( test /script ”,即避免了js注入攻擊又真實(shí)的顯示了用戶輸入。
二:如何轉(zhuǎn)義?
1、通過js實(shí)現(xiàn)
//轉(zhuǎn)義 元素的innerHTML內(nèi)容即為轉(zhuǎn)義后的字符function htmlEncode ( str ) { var ele = document.createElement( span ele.appendChild( document.createTextNode( str ) ); return ele.innerHTML;//解析 function htmlDecode ( str ) { var ele = document.createElement( span ele.innerHTML = str; return ele.textContent;}
2、通過jquery實(shí)現(xiàn)
function htmlEncodeJQ ( str ) { return $( span/ ).text( str ).html();function htmlDecodeJQ ( str ) { return $( span/ ).html( str ).text();}
3、使用
var msg=htmlEncodeJQ( script alert( test /script $( body ).append(msg);
建議使用jquery實(shí)現(xiàn),因?yàn)橛懈玫?a href='http://www.survivalescaperooms.com/tag/jianrongxing_6977_1.html' target='_blank'>兼容性。
以上就是淺談html轉(zhuǎn)義及防止javascript注入攻擊的方法的詳細(xì)內(nèi)容,html教程
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。
新聞熱點(diǎn)
疑難解答
圖片精選