html轉義及如何防止javascript注入攻擊

有的時候頁面中會有一個輸入框,用戶輸入內容後會顯示在頁面中,類似於網頁聊天應用。如果用戶輸入了一段js腳本,比例:,頁面會彈出一個對話框,或者輸入的腳本中有改變頁面js變量的代碼則會時程序異常或者達到跳過某種驗證的目的。那如何防止這種惡意的js腳本攻擊呢?通過html轉義能解決這個問題。

一:什麼是html轉義?

html轉義是將特殊字符或html標籤轉換爲與之對應的字符。如:< 會轉義爲 <> 或轉義爲 >像“”這段字符會轉義爲:“<script>alert('test');</script>”再顯示時頁面會將<解析爲<,>解析爲>,從而還原了用戶的真實輸入,最終顯示在頁面上 的還是“”,即避免了js注入攻擊又真實的顯示了用戶輸入。

阿里雲代金券1000元免費領取地址:https://promotion.aliyun.com/ntms/yunparter/invite.html?userCode=2a7uv47d
新老阿里雲賬戶均可領取!可用於購買阿里雲服務器ECS、雲數據庫RDS、虛擬主機、安騎士、DDoS高防IP等100多雲計算產品。 代金券自領取之日起,有效期是30天,請及時使用,過30天后還可以重新領取。

二:如何轉義?

1、通過js實現

//轉義 元素的innerHTML內容即爲轉義後的字符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實現

function htmlEncodeJQ ( str ) { return $('').text( str ).html();} function htmlDecodeJQ ( str ) { return $('').html( str ).text();}

3、使用
var msg=htmlEncodeJQ('');
$('body').append(msg);

建議使用jquery實現,因爲有更好的兼容性

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章