not*_*.no 8 python forms validation sanitization input
我需要做一些非常快速的脏输入消毒,我想基本上将所有转换<, >为<, >.
我希望得到相同的结果,'<script></script>'.replace('<', '<').replace('>', '>')而不必多次迭代字符串.我知道maketrans与str.translate(即http://www.tutorialspoint.com/python/string_translate.htm)相关但这仅从1个char转换为另一个char.换句话说,人们做不到这样的事情:
inList = '<>'
outList = ['<', '>']
transform = maketrans(inList, outList)
Run Code Online (Sandbox Code Playgroud)
是否有builtin可以在单次迭代中执行此转换的函数?
我想使用builtin功能而不是外部模块.我已经知道了Bleach.
Joe*_*ung 13
您可以使用 cgi.escape()
import cgi
inlist = '<>'
transform = cgi.escape(inlist)
print transform
Run Code Online (Sandbox Code Playgroud)
输出:
<>
Run Code Online (Sandbox Code Playgroud)
https://docs.python.org/2/library/cgi.html#cgi.escape
cgi.escape(s [,quote])将字符串s中的字符'&','<'和'>'转换为HTML安全序列.如果需要在HTML中显示可能包含此类字符的文本,请使用此选项.如果可选标志引用为true,则引号字符(")也会被翻译;这有助于包含在由双引号分隔的HTML属性值中,如下所示.请注意,单引号永远不会被翻译.
小智 6
使用 html.escape() - cgi.escape() 在 Python 3 中已弃用
import html
input = '<>&'
output = html.escape(input)
print(output)
<>&
Run Code Online (Sandbox Code Playgroud)