1
lovedboy Apr 26, 2015
渲染模版输出的时候做。
|
3
MeirLin Apr 26, 2015
最好输入输出都过滤,但是根据业务不同也应该有所取舍
推荐读一下 《白帽子讲Web安全》 这本书 在分享一份tips: http://www.fooying.com/chinese-translationthe-ultimate-xss-protection-cheatsheet-for-developers/ 希望对你有所帮助 |
4
bitinn OP |
5
vivisidea Apr 26, 2015
在显示的时候做,谁显示谁负责~
XSS 过滤逻辑可能没 cover 到所有 case(或者后来可能会出现一些新的case) 这时候如果在存储之前做过滤,后来发现有些 case 没过滤掉咋办?回去数据库找没 cover 到的数据改掉? 如果在显示的时候做,只要改下显示逻辑即可,相对改数据库来说,简单很多吧 |
7
bitinn OP @vivisidea 我们是前后端共用template(virtual dom),然后xss过滤不是一个同意的函数,而是针对不同使用情景设计的好几个API。
我想了很久,除了在template里直接写xss过滤外,没什么招。你不知道一个url是被用在attribute value还是html内容上,如果提前在后端过滤再输出JSON,就必须有两个url,一个为attribute过滤,一个为html内容过滤。这样template和data model都不好写。 当然我们也可以说,懒得这么复杂,统一xss过滤函数,过滤所有可能的场景,即便部分情况导致数据显示不正常也认了。这样就能统一过滤所有数据,不管用在哪里。 |
8
bitinn OP 作为参考,有种不同的过滤手段——
统一API https://github.com/leizongmin/js-xss 分类API https://github.com/yahoo/xss-filters 两者都是前后端均可,这样才能用到template里;大家在前后端JS还用什么库,欢迎推荐。 |
9
otokaze Apr 27, 2015
居然是店长~快快合影,xxs我一般都在输出的时候用htmlspecialchars来完成格式化,一般不会出现问题
|
10
lincanbin Apr 27, 2015 via Android
考虑性能可以在入库前做
|
11
jprovim Apr 27, 2015
沒有什麼好的解法.
1. 前端提交過濾, 2. 後端返回過濾. 3. 存入DB之前過濾. |