必须转义哪些字符以防止(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

回到顶部