小编sch*_*tyl的帖子

哪些字符实际上能够在mysql中引起SQL注入

我们都知道我们应该使用预准备语句或适当的替换/格式化规则,以防止在我们的应用程序中进行sql注入.

但是,当看一下MySQL的字符文字列表时,我注意到它包含以下字符:

  • \0 ASCII NUL(0x00)字符.
  • \' 单引号(')字符.
  • \" 双引号(")字符.
  • \b 退格字符.
  • \n 换行符(换行符).
  • \r 回车符.
  • \t 制表符.
  • \Z ASCII 26(Ctrl+ Z).请参阅下表后面的注释.
  • \\ 反斜杠(\)字符.
  • \% 一个%角色.
  • \_ 一个_角色.

现在,虽然%_字符需要进行转义以防止将不需要的通配符注入到LIKE语句中,并且'(单引号),\(反斜杠)和"(双引号)都需要进行转义以防止注入任意SQL - 未转义的任何其他字符可能直接导致SQL注入漏洞,否则将无法存在?有没有人有这样一个漏洞的真实世界的例子?

让我们假设我们正在构建我们的查询,如:

SELECT * FROM users WHERE username='$user'
Run Code Online (Sandbox Code Playgroud)

$user唯一未转义的字符文字\b(退格),\0(NUL),\n(换行符),\r(换行符),\t(制表符)或\Z(Ctrl+ Z)允许将任意SQL注入此查询的位置是否有任何值?

mysql security sql-injection escaping

23
推荐指数
2
解决办法
4万
查看次数

标签 统计

escaping ×1

mysql ×1

security ×1

sql-injection ×1