[问题] 如何防止发文或留言的内容执行 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