- 如题,上周写接口的时候同事和我说你有没有考虑过 xss 攻击.我不是太明白这个,同事就和我举了一个例子:比如有人故意在前端的输入框内写 js 代码,死循环里写一个 alert,这样读出来的时候 js 一执行 就不会不停的弹弹框.
- 当时感觉比较有道理,后来仔细一想,到底要不要做?因为楼主用的是 java,Mybatis 好像自动对 sql 注入做了过滤.那这样的话,如果用户自己非要输入 js 死循环代码,不会影响服务器,只是影响客户端的展示而已.那这样的话还需要做过滤吗?
- 求各位大佬指教
1
jifengg Apr 2, 2019 xss 可以由前端控制。输入随便,输出的时候,前端不能直接输出,要做转义等等的。
但是接口对前端传过来的数据,统一采用“不信任”原则,你需要用到的数据,就需要做校验。 |
2
Va1n3R Apr 2, 2019 via Android xss 的危害并不是执行死循环之类的 self-xss,而是在于对同域数据的读取。比如你 api 的域名是你司的某个业务的子域名,那么你不做过滤的后果就是危害了整个业务的用户信息泄露(xss 窃取 cookie),更甚者可以通过 xss 接管后台管理账户或者探测进而控制后台功能。
|
3
lllllliu Apr 2, 2019 永远不要相信用户的输入。前端过滤一遍,后端除了框架的过滤,再结合情况自己写验证规则,反正写一次全部都可以用。再结合实际情况能用数据类型约束就用,别一直都 string。必要的数据加密,解密都是可以做的。
|
4
yestodayHadRain OP @Va1n3R 大佬可不可以分享下,你或者你们公司当前对 xss 过滤是怎么做的呢?
|
5
WordTian Apr 2, 2019
建议做一下,XSS 漏洞的威胁等级还是挺高的
|
6
crab Apr 2, 2019 [只是影响客户端的展示而已] = =!
https://ctf-wiki.github.io/ctf-wiki/web/xss/ |
7
yestodayHadRain OP @crab 对不起,大佬.请原谅我的无知
|
8
yestodayHadRain OP @WordTian 可不可以说一下具体怎么实现,给个思路就好
|
9
WordTian Apr 2, 2019 via Android
比较常见的做法是对输入加过滤器
搜索 XSS Filter,应该有不少别人写好的过滤器,你可以瞅瞅 |
10
night98 Apr 2, 2019
怎么可能在接口里写,这种都是全局拦截并转义的
|
11
yestodayHadRain OP |