none
微軟的Anti-Cross Site Scripting Library? RRS feed

  • 問題

  • 網路上一篇很有名的文章
    推薦使用 Microsoft Anti-Cross Site Scripting Library v3.1
    使用這個元件之後可以用簡單的方法提高網站的安全性
    我下載回來後發現裡面有9個方法(Methods )
    GetSafeHtml,Returns a safe version of HTML page by either sanitizing or removing all malicious scripts.
    GetSafeHtmlFragment,Returns a safe version of HTML fragment by either sanitizing or removing all malicious scripts.
    HtmlAttributeEncode,Encodes input strings for use in HTML attributes.
    HtmlEncode,Encodes a input string before safely sending it to a browser client.
    JavaScriptEncode,Encodes input strings for use in JavaScript.
    UrlEncode,Encodes input strings for use in universal resource locators (URLs).
    VisualBasicScriptEncode,Encodes input strings for use in Visual Basic Script.
    XmlAttributeEncode,Encodes input strings for use in XML attributes.
    XmlEncode,Encodes input strings for use in XML.

    我看了說明書的範例
    JavaScriptEncode是將特殊符號轉換成\x27,以便js顯示
    UrlEncode是將特殊符號轉換成%27,以便透過url傳送
    VisualBasicScriptEncode是將特殊符號轉換成"&chrw(39)&",以便vbs顯示
    我不太明白,不是已經有Server.URLEncode跟HttpUtility.UrlEncode了
    為什麼會有必要用到AntiXss.URLEncode??難道編出來的東西會不一樣嗎?
    如果不一樣,是不是會造成Server.URLDecode無法解碼?
    那這樣不就會造成查詢字串無法正確傳遞??

    另外GetSafeHtml跟GetSafeHtmlFragment
    依照文章內部所寫會做2件事
    1."惡意的 HTML 標籤 (例如: script, iframe, link,meta, …)、惡意的 HTML 屬性 (例如: onload, onclick, …)、惡意的 CSS 屬性"移除
    2."HTML標籤"正規化
    我猜大概是可以用在留言板之類的,讓使用者可輸入一般的HTML,可以用style改變字形顏色大小之類,但卻不能執行js
    且,依照文章中所寫,GetSafeHtml是一整個頁面過濾.這個甚麼時候有機會用到啊?

    然後HtmlEncode會把所有特殊符號轉成HTML顯示用的如<
    應該是輸入資料時想過濾HTML與js時用的
    可是跟上面一樣的疑問,不是已經有Server.HtmlEncode跟HttpUtility.HtmlEncode了嗎?
    難道AntiXss.HtmlEncode編出來的東西真的會不一樣嗎?

    另外,我不太清楚HtmlEncode、HtmlAttributeEncode、XmlEncode跟XmlAttributeEncode的差異?
    由說明書中的範例看起來是一樣的.為什麼要分成4個啊??

    版上有沒有人剛好也研究過微軟AntiXss元件的..以上4個問題,不知道有沒有想過
    2010年6月23日 上午 03:39

解答

  • hi,

    關於你的這些問題,你可以參考一下這邊http://mycck.blogspot.com/2009/07/xss_29.html

    至於GetSafeHtml 什麼時候用,有時候我們要讓USER放入整頁的內容,直接產一個網頁出來的時候就會用到。

     

    如果真的想要詳細了解,你可以直接用reflector把整個dll解開來看會最清楚。



    My Blog:http://www.dotblogs.com.tw/alonstar
    解決問題之後,別忘了回到論壇把正確回應標示成解答哦!
    • 已標示為解答 小小郭 2010年6月23日 上午 08:20
    2010年6月23日 上午 05:50