防範小技巧
1.一般我們在開發網站過程中,有可能為了專案的需求而暫時關閉基本防護的功能,所以在上線前記得檢查一下 web.config 的設定是不是正常。
2 | < pages validateRequest = "true" /> //預設為 ture => 開啟防護 |
2.常見的方法可以利用 Server.HtmlEncode 來對內容進行編碼:
1 | string value = Server.HtmlEncode("< script >alert('XSS 攻擊');</ script >"); |
而如果使用的 .Net Framework 為 4.5的版本可以利用新的方法 AntiXssEncoder.HtmlEncode 來對內容進行編碼:
1 | // 需引用 System.Web.Security.AntiXss; |
2 | string value = AntiXssEncoder.HtmlEncode("< script >alert('XSS 攻擊');</ script >", true); |
3.若使用 ASP.NET MVC 進行開發,在 View 裡利用 Html Helper 顯示資料時也已經幫我過處理大部分的安全性問題。
首先我們先故意做一個會造成 XSS 攻擊的惡意程式碼,這是在 ASP.NET MVC 中的 Controller
1 | public ActionResult Index() |
3 | TestModel model = new TestModel(); |
4 | model.XssAtack = "< script >alert('攻擊');</ script >"; |
下面示範幾種在 View 中顯示資料的方法,來檢驗各個方法對於 XSS 的防範機制:
1 | @Html.DisplayFor(p => p.XssAtack) 攻擊失敗,顯示純文字 |
3 | @Html.DisplayForModel() 攻擊失敗,顯示純文字 |
5 | @Html.EditorFor(P => P.XssAtack) 攻擊失敗,顯示 input 標籤 |
7 | @Html.Encode(Model.XssAtack) 攻擊失敗,將內容進行編碼 |
1 | @Html.Raw(Model.XssAtack) |
3 | @Html.DisplayTextFor(P => P.XssAtack) |
測試結果中顯示 Html.Raw 和 Html.DisplayTextFor 會造成 XSS 攻擊的問題,所以在開發 ASP.NET MVC 時也應該小心使用這些 Html Helper,你防止不必要的問題發生,反觀如果需求就是要跳出一段 alert 來提醒使用者,也可以利用這兩種方法來做資料顯示。
其他更多詳細內容請參考原始文章
沒有留言:
張貼留言