推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
virusdefender
V2EX  ›  Python

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

  •  
  •   virusdefender ·
    virusdefender · Nov 14, 2014 · 4819 views
    This topic created in 4223 days ago, the information mentioned may be changed or developed.
    最近在网上找了一个Python实现的xss filter,然后通过测试发现有绕过的情况。究其原因,是忽略了一个比较隐蔽而且经常被误用的地方。然后自己去修改,去打补丁,发现还是有问题,又牵扯出了python的另外两个知识点,反正我觉得自己学到了很多,在这里分享一下,有什么问题希望各位大神提出来。

    地址: http://www.virusdefender.net/index.php/archives/45/
    12 replies    2014-11-15 07:09:42 +08:00
    binux
        1
    binux  
       Nov 14, 2014
    这样防xss思路就是错的
    virusdefender
        2
    virusdefender  
    OP
       Nov 14, 2014
    @binux 为什么啊?
    binux
        3
    binux  
       Nov 14, 2014
    @virusdefender 哦,我明白你的目的了。

    创建模式要比删除模式好。创建一个新对象,提取需要的信息,把信息赋值给新对象。
    feilaoda
        4
    feilaoda  
       Nov 14, 2014
    lxml的clean html即可
    gamexg
        5
    gamexg  
       Nov 14, 2014
    没做过,难道像 ChanneW 说的,全部无效,然后手工重新生成有效的html代码?
    Bakemono
        6
    Bakemono  
       Nov 14, 2014 via iPad
    今天没带macbook回宿舍…明天我帮lz bypass一下xss filter 吧:)
    nooper
        7
    nooper  
       Nov 14, 2014
    应当尽量避免使用del,你的代码可以更简化。还是有点复杂。
    virusdefender
        8
    virusdefender  
    OP
       Nov 14, 2014
    @binux
    @nooper 其实这也是别人写的 我拿过来测试的时候发现了几个问题
    virusdefender
        9
    virusdefender  
    OP
       Nov 14, 2014
    @Bakemono 好啊 好啊 这几个问题也是我在fuzz的时候发现的啊
    ryd994
        10
    ryd994  
       Nov 15, 2014 via Android
    典型的被语言惯坏了,你到C++里绝对会被打死~
    正确做法难道不是一边检查一边加元素,检查不通过就不加么
    ryd994
        11
    ryd994  
       Nov 15, 2014 via Android
    检查,坚持成功就加到新list里
    msg7086
        12
    msg7086  
       Nov 15, 2014
    从Rubyer的角度来看这个似乎应该用#select或者#delete加个block解决。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1156 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 52ms · UTC 23:39 · PVG 07:39 · LAX 16:39 · JFK 19:39
    ♥ Do have faith in what you're doing.