11/22/2006

HTML Filter 3: XSS

講了那麼多 HTML Filter 的例子 例子2,回到一個問題?如果照著之前的程式,有沒有辦法防範 XSS ?我現在給的答案是
不容易
為什麼?難道 Rails 那麼爛?錯了,看看這個表吧,當你的站遇到 Extra dot for absolute DNS 這種攻擊。
<IMG """><SCRIPT>alert("XSS")</SCRIPT>">
我們發現,有太多玩法可以放 XSS,而濾掉特定 tag 方式幾乎行不通,因為我們還是希望開放某些有用的 tag 像是 a 或是 img。但是我們可以減少這種可能發生率
  1. 使用 white list filter ,盡量少用 black list,whitelist 就是僅僅開放某些 tag ,blacklist 就是僅僅關閉某些 tag。我之前的 html filter 就是 white list 的。
  2. href 跟 src 裡面要檢查 javascript 的欄位
  3. 如果沒必要開放 tag ,盡量使用 h 通殺
延伸閱讀
  1. XSS 筆記
  2. XSS 列表

沒有留言: