[問題] 如何防止發文或留言的內容執行 script?

作者: mchen11 (mchen11)   2015-07-29 21:39:57
例如像論壇這樣的環境,發文者或留言者的內容,若是惡意藏有
js 的話,請問要如何防止?
假設內容有 <script> 標籤的話比較簡單,在發文者送出內容之前,
用正規表示式就能偵測到並移除。不過怕是在 html 標籤裡面放事件,
例如: <img src="" onload="執行的 script"/>
這樣就可以偷渡 script 了。不曉得 js 有沒有什麼寫法,可以在送出
內容之前,過濾掉所有的事件語法,或是其他的處理方式呢?謝謝!
作者: oToToT (屁孩)   2015-07-29 22:14:00
直接送出去後,在後端做htmlspecialchars之類的就可以了吧
作者: MangoTW (不在線上)   2015-07-29 22:16:00
轉成替代字元,他打角括號你就讓他顯示角括號就可以了。
作者: mmis1000 (秋月戀楓)   2015-07-30 04:24:00
如果你想讓他可以輸入某些tag其實也有現成的處理lib可以幫你'消毒',保留你允許的標籤和屬性
作者: Peruheru (還在想)   2015-07-30 09:42:00
你可以自己規範比如說圖片要用 [img]src[/img],自己轉然後使用上面的encode不允許使用者使用HTML標籤這樣一來出現的一定都是你允許的內容
作者: LPH66 (-6.2598534e+18f)   2015-07-30 17:09:00
或者就直接使用已有的類似編碼規範例如 BBCode 等
作者: mmis1000 (秋月戀楓)   2015-07-30 18:23:00
https://www.npmjs.com/package/sanitize-html像這種的,可以白名單你允許用的東西不過server還是要再跑一次,你不能相信client給的東西

Links booklink

Contact Us: admin [ a t ] ucptt.com