1. 程式人生 > >關於在線文本編輯器防XSS註入攻擊問題

關於在線文本編輯器防XSS註入攻擊問題

使用 行處理 som 註入攻擊 .get str 代碼 自動 這樣的

跨站腳本攻擊,又稱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註入攻擊問題