關於在線文本編輯器防XSS註入攻擊問題
跨站腳本攻擊,又稱XSS代碼攻擊,也是一種常見的腳本註入攻擊。例如在下面的界面上,很多輸入框是可以隨意輸入內容的,特別是一些文本編輯框裏面,可以輸入例如<script>alert(‘這是一個頁面彈出警告‘);</script>這樣的內容,如果在一些首頁出現很多這樣內容,而又不經過處理,那麽頁面就不斷的彈框,更有甚者,在裏面執行一個無限循環的腳本函數,直到頁面耗盡資源為止,類似這樣的攻擊都是很常見的。
為了避免上述的XSS代碼攻擊,解決辦法是可以使用HttpUitility的HtmlEncode或者最好使用微軟發布的AntiXSSLibrary進行處理,這個更安全。微軟反跨站腳本庫(AntiXSSLibrary)是一種編碼庫,旨在幫助保護開發人員保護他們的基於Web的應用不被XSS攻擊。
編碼方法 |
使用場景 |
示例 |
---|---|---|
HtmlEncode(String) |
不受信任的HTML代碼。 | <a href=”http://www.cnblogs.com”>Click Here [不受信任的輸入]</a> |
HtmlAttributeEncode(String)
|
不受信任的HTML屬性 |
<hr noshade size=[不受信任的輸入]> |
JavaScriptEncode(String) |
不受信任的輸入在JavaScript中使用 |
<script type=”text/javascript”> … [Untrusted input] … </script> |
UrlEncode(String)
|
不受信任的URL |
<a href=”http://cnblogs.com/results.aspx?q=[Untrusted input]”>Cnblogs.com</a> |
VisualBasicScriptEncode(String) |
不受信任的輸入在VBScript中使用 |
<script type=”text/vbscript” language=”vbscript”> … [Untrusted input] … </script> |
XmlEncode(String) |
不受信任的輸入用於XML輸出 |
<xml_tag>[Untrusted input]</xml_tag> |
XmlAttributeEncode(String)
|
不 受信任的輸入用作XML屬性 |
<xml_tag attribute=[Untrusted input]>Some Text</xml_tag> |
然而,特殊情況如通過文本編輯器提交文章內容時,由於排版和格式化的原因,需要展示出html效果,以上方法行不通,此時需要既能展示出html效果,又要處理掉危險的xss代碼。微軟提供的HtmlSanitizationLibrary類庫可以很好解決此問題。
string safecode=Sanitizer.GetSafeHtmlFragment(txtName.Text);
此方法能夠自動過濾掉特殊的代碼,又不影響html效果顯示。
關於在線文本編輯器防XSS註入攻擊問題