两个非常隐蔽的 bug 导致的 Python xss filter 绕过

2014 年 11 月 14 日
 virusdefender
最近在网上找了一个Python实现的xss filter,然后通过测试发现有绕过的情况。究其原因,是忽略了一个比较隐蔽而且经常被误用的地方。然后自己去修改,去打补丁,发现还是有问题,又牵扯出了python的另外两个知识点,反正我觉得自己学到了很多,在这里分享一下,有什么问题希望各位大神提出来。

地址: http://www.virusdefender.net/index.php/archives/45/
4691 次点击
所在节点    Python
12 条回复
binux
2014 年 11 月 14 日
这样防xss思路就是错的
virusdefender
2014 年 11 月 14 日
@binux 为什么啊?
binux
2014 年 11 月 14 日
@virusdefender 哦,我明白你的目的了。

创建模式要比删除模式好。创建一个新对象,提取需要的信息,把信息赋值给新对象。
feilaoda
2014 年 11 月 14 日
lxml的clean html即可
gamexg
2014 年 11 月 14 日
没做过,难道像 ChanneW 说的,全部无效,然后手工重新生成有效的html代码?
Bakemono
2014 年 11 月 14 日
今天没带macbook回宿舍…明天我帮lz bypass一下xss filter 吧:)
nooper
2014 年 11 月 14 日
应当尽量避免使用del,你的代码可以更简化。还是有点复杂。
virusdefender
2014 年 11 月 14 日
@binux
@nooper 其实这也是别人写的 我拿过来测试的时候发现了几个问题
virusdefender
2014 年 11 月 14 日
@Bakemono 好啊 好啊 这几个问题也是我在fuzz的时候发现的啊
ryd994
2014 年 11 月 15 日
典型的被语言惯坏了,你到C++里绝对会被打死~
正确做法难道不是一边检查一边加元素,检查不通过就不加么
ryd994
2014 年 11 月 15 日
检查,坚持成功就加到新list里
msg7086
2014 年 11 月 15 日
从Rubyer的角度来看这个似乎应该用#select或者#delete加个block解决。

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

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

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

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

© 2021 V2EX