.NET Framework 防護 XSS 方法

小編接觸的客戶願意掃描靜態網頁源碼並不多,最近碰到了一個願意在資安上投入資源,使用Fortify掃描完成後報告頁數多到不行,雖然套用上 WAF 在前方阻擋後可以解決大部分問題,而程式碼的漏洞還是必須得修正。

與客戶溝通為什麼網頁程式碼需要修正,並協助客戶找怎麼改寫程式碼 AP廠商過得好開心 ,小編花了時間了解問題及幫忙查證修正方式,順道紀錄畢竟實作安全的知識永遠不嫌少。

客戶有問題的程式碼如下方第四行: Text='<%# Eval(“Value”) %>’,沒有針對輸入的資料進行 encode,會讓攻擊者有機會進行 XSS 等攻擊。

修正方式:

方法一 :

.NET 4.5 版本以上使用 Text='<%# Eval(“Value”) %>’

Text='<%# Eval("Value") %>'

在<%# 之後再添加一個 : 就會自動進行編碼。

Text='<%#: Eval("Value") %>'

方法二:

使用 HttpUtility 類

  • HtmlEncode 對 html 編碼的字串進行編碼,並回傳已經編碼的文字。
  • HtmlDecode 對 html 編碼的字串進行解碼,並回傳已經解碼的文字。
Text='<%# Eval("Value") %>'

在Eval外在包一層將文字根據需求將文字進行編碼或解碼。

Text='<%#: HttpUtility.HtmlEncode(Eval("Value")) %>'

小編對於 ASP 的撰寫還是新手,對於安全上還是盡可能詳細查詢跟處理。如有更好的寫法也請提供給我,將修正並用更安全的方式處理。

參考來源:

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *