小編接觸的客戶願意掃描靜態網頁源碼並不多,最近碰到了一個願意在資安上投入資源,使用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 的撰寫還是新手,對於安全上還是盡可能詳細查詢跟處理。如有更好的寫法也請提供給我,將修正並用更安全的方式處理。