今天被测试发了一个 xss 漏洞,之前明明做过 xss 过滤的,很纳闷的看了一下

查看 162|回复 10
作者:Forviler   
之前做过 xss 过滤 用的 js-xss
之前测试也都是正常的
今天看到他的测试内容: < img/src=1 onerror='top.onerror=alert; throw 2'>
看到这个 “/” 好像明白了什么, 不过为什么这种也会被浏览器识别成 img 标签 很纳闷
然后去看 js-xss 的 issues 发现了好像一样的 https://github.com/leizongmin/js-xss/issues/283
这么久也没回复,而且 js-xss 好像是不是也不维护了
虽然用其中的 onIgnoreTag 在其中做了标签名中是否有 “/” 然后去掉 “/” 后再调用 xss 函数
但是不知道还有没有类似的问题出现;
想问一下有没有别的好用的 xss 过滤办法

XSS, js-xss, onerror, img

jowan   
现在的浏览器不是上古的 IE 很多编写的缺陷和 BUG 会被它们主动修复 比如你缺少关闭标签 或者属性值拼写错误 它们都是尽量去帮你修复 有时候在控制台会给你一些 warning 实在修复不了 会直接给你报错
jowan   
就比如说 chrome 你输入网址的时候 xxx.com 的点写成了句号 它都会帮你转换成英文的
InDom   
如果你不是富文本的话,其实直接用 innerText 而非 innerHTML 就可以避免。
至于框架,也有框架也有类似的安全方法。从原理上就杜绝了这种问题的发生。
如果你真的有富文本的需求,那么我一般是这么做的
禁止 script 与 on[a-zA-Z] 的出现,或者把 script on 替换为 scr-ipt on-.
宁错杀,不放过。
Forviler
OP
  
@jowan 所以 ‘/’ 是在修复之列的, 我试了几个别的都不行,这种不同浏览器还有不同的修复方案了,希望没有别的了
tabris17   
甚至不同浏览器对于不规范 HTML Tag 处理方式还不一样,扯得很。最好的办法就是保存时服务端做一次 html 解析,规范化后保存
jowan   
@jowan TMD 楼下的朋友不要点击上面我发的那个示例网址 我草我在办公室 27 寸的显示屏打开了 尴尬
Forviler
OP
  
@InDom 确实是需要富文本,不然 innerText 完全不会有这种问题; 干掉 on[a-zA-Z] 和 script 确实一劳永逸;这项目是个老项目了,不想动太多; 下个项目要这样搞一下
xenme   
@jowan 😄,说明这域名可以
Forviler
OP
  
@tabris17 后端大佬使唤不动
您需要登录后才可以回帖 登录 | 立即注册

返回顶部