必须转义哪些字符以防止(My)SQL注入?
我正在使用MySQL API的功能
mysql_real_escape_string()
根据文档,它转义以下字符:
\0\n
\r
\
'
"
\Z
现在,我查看了OWASP.org的ESAPI安全库,并在Python端口中包含以下代码(http://code.google.com/p/owasp-
esapi-python/source/browse/esapi/codecs/mysql。
py):
""" Encodes a character for MySQL.
"""
lookup = {
0x00 : "\\0",
0x08 : "\\b",
0x09 : "\\t",
0x0a : "\\n",
0x0d : "\\r",
0x1a : "\\Z",
0x22 : '\\"',
0x25 : "\\%",
0x27 : "\\'",
0x5c : "\\\\",
0x5f : "\\_",
}
现在,我想知道是否真的需要转义所有这些字符。我知道为什么%和_在那里,它们在LIKE运算符中是元字符,但我不能简单地理解为什么它们添加退格和制表符(\ b
\ t)?如果执行查询,是否存在安全问题:
SELECT a FROM b WHERE c = '...user input ...';
用户输入中包含制表符或退格字符的地方?
我的问题在这里:为什么它们在ESAPI安全库中包含\ b \ t?在 任何 情况下,您可能需要转义那些字符?
回答:
该字符串MySQL手册页说:
\0
ASCII NUL(0x00)字符。\'
单引号(“'
”)字符。\"
双引号(“"
”)字符。\b
退格字符。\n
换行符(换行符)。\r
回车符。\t
制表符。\Z
ASCII 26(Control-Z)。请参阅表格后面的注释。\\
反斜杠(“\
”)字符。\%
一个“%
”字符。请参阅表格后面的注释。\_
一个“_
”字符。请参阅表格后面的注释。
以上是 必须转义哪些字符以防止(My)SQL注入? 的全部内容, 来源链接: utcz.com/qa/422526.html