1
lovedboy 2015-04-26 18:55:32 +08:00
渲染模版输出的时候做。
|
2
bitinn OP @lovedboy 怎么知道哪些数据由用户生成,用schema检查整个object还是手动检查每个attribute?
|
3
MeirLin 2015-04-26 19:01:19 +08:00
最好输入输出都过滤,但是根据业务不同也应该有所取舍
推荐读一下 《白帽子讲Web安全》 这本书 在分享一份tips: http://www.fooying.com/chinese-translationthe-ultimate-xss-protection-cheatsheet-for-developers/ 希望对你有所帮助 |
4
bitinn OP |
5
vivisidea 2015-04-26 21:03:29 +08:00
在显示的时候做,谁显示谁负责~
XSS 过滤逻辑可能没 cover 到所有 case(或者后来可能会出现一些新的case) 这时候如果在存储之前做过滤,后来发现有些 case 没过滤掉咋办?回去数据库找没 cover 到的数据改掉? 如果在显示的时候做,只要改下显示逻辑即可,相对改数据库来说,简单很多吧 |
6
ca1n 2015-04-26 21:09:15 +08:00
@vivisidea 如果过滤函数好的话 输入的时候做比输出的时候做应该要省很多事 而且防xss的话也并不复杂吧 就我个人来说在输入的时候过滤的看的比较多
|
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 2015-04-27 09:54:06 +08:00
居然是店长~快快合影,xxs我一般都在输出的时候用htmlspecialchars来完成格式化,一般不会出现问题
|
10
lincanbin 2015-04-27 11:07:15 +08:00 via Android
考虑性能可以在入库前做
|
11
jprovim 2015-04-27 13:44:39 +08:00
沒有什麼好的解法.
1. 前端提交過濾, 2. 後端返回過濾. 3. 存入DB之前過濾. |