0

可能重复:
PHP 的 mysql_real_escape_string 和 MySQL 注入

这是有问题的角色:

\x1A

为什么它会构成威胁,它是什么?谷歌搜索说这是一个控制字符,但我不明白这意味着什么,尤其是在转义数据的情况下。

谢谢

4

1 回答 1

3

0x1A是 ctrl-z,在 DOS 时代它被用作 EOF(文件结束)标记。虽然它在任何现代数据库上都不是问题,但它可能被用来通过旧的 dos-days SQL 解析器偷偷额外的查询语句,所以你最终会得到类似的东西:

UPDATE scores SET points=points+1
ctrl-z
DROP TABLE scores

一个愚蠢的解析器会停在 ctrl-z 上,想着“嘿,看,这是文件的结尾”。整个字符串将被传递给数据库,如果它是一个“智能”数据库,将忽略 ctrl-z 并愉快地执行 drop 命令

于 2012-11-30T21:58:51.720 回答