python防xss注入
2018-03-14 09:17
78 查看
什么是xss注入攻击
可以查看这篇文章
其实主要就是转换特定的字符,在某些接口前转换出来或者在前端做处理转换出来,这篇文章只是后端的转换和恢复
转换
quote表示是否要转换引号
转换回来
有多种方式,针对纯英文环境,可以使用htmlparser
发现一个问题,会decode成unicode,所以会出现其他类型字符无法解析的问题,比如:
因此可以使用xml反解
后面的字典里放的是自定义转换的内容,因为xml不认为引号是特殊字符,所以要补上
可以查看这篇文章
其实主要就是转换特定的字符,在某些接口前转换出来或者在前端做处理转换出来,这篇文章只是后端的转换和恢复
转换
quote表示是否要转换引号
>>> import cgi >>> cgi.escape('<script>&"', quote=True) '<script>&"'
转换回来
有多种方式,针对纯英文环境,可以使用htmlparser
>>> HTMLParser.unescape.__func__(HTMLParser, '<script>&"') u'<script>&"'
发现一个问题,会decode成unicode,所以会出现其他类型字符无法解析的问题,比如:
HTMLParser.unescape.__func__(HTMLParser, 'ss&\xe9') Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/HTMLParser.py", line 475, in unescape return re.sub(r"&(#?[xX]?(?:[0-9a-fA-F]+|\w{1,8}));", replaceEntities, s) File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/re.py", line 155, in sub return _compile(pattern, flags).sub(repl, string, count) UnicodeDecodeError: 'ascii' codec can't decode byte 0xe9 in position 0: ordinal not in range(128)
因此可以使用xml反解
>>> from xml.sax.saxutils import unescape >>> unescape('<script>&"', {"'": "'", """: '"'}) '<script>&"'
后面的字典里放的是自定义转换的内容,因为xml不认为引号是特殊字符,所以要补上
相关文章推荐
- Python操作sqlite3快速、安全插入数据(防注入)的实例
- 77个XSS注入汇总
- jsp 前端防止 xss 注入攻击
- xss脚本注入后端的防护
- Web攻防之SQL注入,XSS,CSRF
- web攻防之SQL注入、XSS、CSRF
- Python Discuz 7.2 faq.php 注入漏洞全自动利用工具
- XSS注入方式和逃避XSS过滤的常用方法(整理)
- HttpServletRequestWrapper 实现xss注入(2)
- CTF/CTF练习平台-XSS【xss注入及js unicode编码及innerHTML】
- PHPTaint-检测xss/sqli/shell注入的php扩展模块
- Python写的Discuz7.2版faq.php注入漏洞工具
- Python 模板引擎的注入问题分析
- XSS注入学习
- 几种极其隐蔽的XSS注入的防护
- 几种极其隐蔽的XSS注入的防护
- 常见的XSS 注入攻击方式及预防
- XSS注入常用语句(整理)
- HttpServletRequestWrapper 实现xss注入(2)
- 实用:防止SQL、XSS等注入攻击的Filter