作者mchen11 (mchen11)
看板Ajax
標題[問題] 如何防止發文或留言的內容執行 script?
時間Wed Jul 29 21:39:57 2015
例如像論壇這樣的環境,發文者或留言者的內容,若是惡意藏有
js 的話,請問要如何防止?
假設內容有 <script> 標籤的話比較簡單,在發文者送出內容之前,
用正規表示式就能偵測到並移除。不過怕是在 html 標籤裡面放事件,
例如: <img src="" onload="執行的 script"/>
這樣就可以偷渡 script 了。不曉得 js 有沒有什麼寫法,可以在送出
內容之前,過濾掉所有的事件語法,或是其他的處理方式呢?謝謝!
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.165.31.50
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Ajax/M.1438177200.A.F58.html
1F:推 oToToT: 直接送出去後,在後端做htmlspecialchars之類的就可以了吧 07/29 22:14
2F:→ MangoTW: 轉成替代字元,他打角括號你就讓他顯示角括號就可以了。 07/29 22:16
這樣不行吧? <img..../> 變成 <img.../> 圖片就不能顯示了...@@"
3F:推 mmis1000: 如果你想讓他可以輸入某些tag其實也有現成的處理lib可以 07/30 04:24
4F:→ mmis1000: 幫你'消毒',保留你允許的標籤和屬性 07/30 04:24
※ 編輯: mchen11 (118.165.6.172), 07/30/2015 09:23:18
5F:推 Peruheru: 你可以自己規範比如說圖片要用 [img]src[/img],自己轉 07/30 09:42
6F:→ Peruheru: 然後使用上面的encode不允許使用者使用HTML標籤 07/30 09:43
7F:→ Peruheru: 這樣一來出現的一定都是你允許的內容 07/30 09:44
8F:推 LPH66: 或者就直接使用已有的類似編碼規範例如 BBCode 等 07/30 17:09
10F:→ mmis1000: 像這種的,可以白名單你允許用的東西 07/30 18:23
11F:→ mmis1000: 不過server還是要再跑一次,你不能相信client給的東西 07/30 18:24