大家平时写接口时会不会对前端的参数做一些 js 代码过滤?或者说是 xss 攻击?

2019-04-02 10:53:02 +08:00
 yestodayHadRain
1337 次点击
所在节点    问与答
11 条回复
jifengg
2019-04-02 12:30:50 +08:00
xss 可以由前端控制。输入随便,输出的时候,前端不能直接输出,要做转义等等的。

但是接口对前端传过来的数据,统一采用“不信任”原则,你需要用到的数据,就需要做校验。
Va1n3R
2019-04-02 12:42:26 +08:00
xss 的危害并不是执行死循环之类的 self-xss,而是在于对同域数据的读取。比如你 api 的域名是你司的某个业务的子域名,那么你不做过滤的后果就是危害了整个业务的用户信息泄露(xss 窃取 cookie),更甚者可以通过 xss 接管后台管理账户或者探测进而控制后台功能。
lllllliu
2019-04-02 14:56:15 +08:00
永远不要相信用户的输入。前端过滤一遍,后端除了框架的过滤,再结合情况自己写验证规则,反正写一次全部都可以用。再结合实际情况能用数据类型约束就用,别一直都 string。必要的数据加密,解密都是可以做的。
yestodayHadRain
2019-04-02 16:00:02 +08:00
@Va1n3R 大佬可不可以分享下,你或者你们公司当前对 xss 过滤是怎么做的呢?
WordTian
2019-04-02 16:11:50 +08:00
建议做一下,XSS 漏洞的威胁等级还是挺高的
crab
2019-04-02 16:17:19 +08:00
[只是影响客户端的展示而已] = =!
https://ctf-wiki.github.io/ctf-wiki/web/xss/
yestodayHadRain
2019-04-02 16:19:47 +08:00
@crab 对不起,大佬.请原谅我的无知
yestodayHadRain
2019-04-02 16:20:08 +08:00
@WordTian 可不可以说一下具体怎么实现,给个思路就好
WordTian
2019-04-02 16:44:46 +08:00
比较常见的做法是对输入加过滤器
搜索 XSS Filter,应该有不少别人写好的过滤器,你可以瞅瞅
night98
2019-04-02 17:06:01 +08:00
怎么可能在接口里写,这种都是全局拦截并转义的
yestodayHadRain
2019-04-02 18:18:47 +08:00
@WordTian
@night98 ok,明白了,就是面向后端所有对外开放接口拦截,写一个拦截器过滤.然后过滤器现在大家写好的有很多,我可以拿来复用对吧.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/551144

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX