1. 程式人生 > >微軟AntiXSS防止xss攻擊類庫

微軟AntiXSS防止xss攻擊類庫

輸入 添加 lan 轉義 visual class cin java 最新

AntiXSS,由微軟推出的用於防止XSS攻擊的一個類庫,可實現輸入白名單機制和輸出轉義。

AntiXSS最新版的下載地址:http://wpl.codeplex.com


下載安裝之後,安裝目錄下有以下文件:
AntiXSS.chm:

包括類庫的操作手冊參數說明。

AntiXSSLibrary.dll:

包含Antixss,Encoder類(輸出轉義),AntiXSS類中的方法已經過時,建議使用Encoder類中相同的方法。
HtmlSanitizationLibrary.dll:

包含Sanitizer類(輸入白名單),只包含GetSafeString和GetSafeHtmlFragment兩個方法。

使用時在工程內添加引用HtmlSanitizationLibrary.dll 和AntiXSSLibrary.dll
導入命名空間using Microsoft.Security.Application;


我們需要決定使用哪個編碼函數。接下來的表格將幫助你決定使用哪個編碼函數:

編碼函數

應該使用的場景

示例/模式

HtmlEncode

不可信的輸入被用作html輸出,被分配給一個html屬性除外

<a href="http://www.contoso.com">Click Here [Untrusted input]</a>

HtmlAttributeEncode

不可信的輸入作為一個html屬性

<hr noshade size=[Untrusted input]>

JavaScriptEncode

不可信的輸入作為一個javascript上下文

<script type="text/javascript">

[Untrusted input]

</script>

UrlEncode

不可信的輸入作為一個url(例如作為一個查詢參數的值)

<a href="http://search.msn.com/results.aspx?

q=[Untrusted-input]">Click Here!</a>

VisualBasicScriptEncode

不可信的輸入作為一個visual basic上下文

<script type="text/vbscript" language="vbscript">

[Untrusted input]

</script>

XmlEncode

不可信的輸入作為一個xml輸出,除了把它作為一個xml節點的屬性

<xml_tag>[Untrusted input]</xml_tag>

XmlAttributeEncode

不可信的輸入作為一個xml的屬性

<xml_tag attribute=[Untrusted input]>Some Text</xml_tag>

在將 HTML 數據保存到數據庫之前,使用 AntiXSS Sanitizer 對象(該庫是一個單獨的下載文件,將在下文中介紹)調用 GetSafeHtml 或 GetSafeHtmlFragment;不要在保存數據之前對數據進行編碼。AntiXss.GetSafeHtmlFragment(html)方法,這個方法會替換掉html裏的危險字符。 確保所有輸出內容都經過 HTML 編碼。



AntiXss類庫是一款預防註入攻擊的開源類庫,它通過白名單機制進行內容編碼。目前它支持這些輸入類型:XML,HTML,QueryString,HTMLFormURLEncode,Ldap,JavaScript。在日常的開發中我們並不會安全編碼像Ldap或JavaScript這樣的輸入類型,大多都是對XML,QueryString或Form URL進行安全編碼。下面是個安全編碼XML文件的小例子:

微軟AntiXSS防止xss攻擊類庫