当前位置: 首页 > 面试题库 >

必须转义哪些字符以防止(My)SQL注入?

莫泓
2023-03-14
问题内容

我正在使用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)。请参阅表格后面的注释。
  • \\ 反斜杠(“ \”)字符。
  • \% 一个“ %”字符。请参阅表格后面的注释。
  • \_ 一个“ _”字符。请参阅表格后面的注释。


 类似资料:
  • 问题内容: 我试图在Java中放置一些反SQL注入,并发现使用“ replaceAll”字符串函数非常困难。最后,我需要,将转换现有的功能使得当字符串由MySQL的SQL注入评估将被阻止。 我已经整理了一些正在使用的代码,并且该函数中的所有内容都使我大失所望。如果有人碰巧有这个例子,我将不胜感激。 问题答案: PreparedStatement是可行的方法,因为它们使SQL注入成为不可能。这是一个

  • 问题内容: 我试图在Java中放置一些反SQL注入,并发现使用“ replaceAll”字符串函数非常困难。最后,我需要,将转换现有的功能来,任何到,任何到,任何以使得当字符串由MySQL的SQL注入评估将被阻止。 我已经整理了一些正在使用的代码,并且该函数中的所有内容都使我大失所望。如果有人碰巧有这个例子,我将不胜感激。 问题答案: PreparedStatement是可行的方法,因为它们使SQ

  • 我正在寻找必须在ms sql服务器中转义的特殊字符列表,但找不到我看到的类似问题的大部分答案,建议使用参数化查询...我已经在做了,但我使用的框架不会为我做任何转义。 因此,我想我会试一试,看看哪一个失败了......我尝试了一个简单的查询 在这样的查询中,我尝试了键盘上能找到的几乎所有字符,所有字符似乎都能正常工作。。。除了单引号。。那一个失败了。 因此,我想知道ms sql server-ts

  • 问题内容: 我在一家公司工作,该公司负责数据库模块的人员严格禁止使用准备好的语句。我担心他的实施不安全。 这是我们当前用于进行SQL查询的代码(带有JDBC / MySQL 5.5的Java 8应用程序): 我无法进行任何注射,但是他的解决方案对我来说似乎非常棘手。任何人都可以指出如何避免这种转义吗?如果我无法解决任何问题,他将不会替换他的代码,并且我们在应用程序(银行业务)中拥有成千上万客户的非

  • 问题内容: 我厌倦了总是试图猜测,()[]{}|在使用许多正则表达式实现时是否应该转义’ ‘等特殊字符。 它与Python,sed,grep,awk,Perl,重命名,Apache,find等不同。是否有任何规则集可以告诉我何时以及何时不应该转义特殊字符?它是否取决于正则表达式类型,例如PCRE,POSIX或扩展正则表达式? 问题答案: 实际上,您必须转义哪些字符以及您必须避免转义哪些字符确实取决

  • 只想确认Oracle SQL中需要转义哪些字符才能避免SQL注入?到目前为止,我只发现这篇文章似乎回答了我的问题:https://ss64.com/ora/syntax-escape.html.然而,正如我所听说的,amphora“@”字符也需要转义,因此,我认为上面的文章中有不完整的需要转义的字符列表。如果有人能告诉我Oracle SQL中需要转义的字符的完整列表,我将不胜感激。