一直让我感到困惑的一件事是输入转义以及您是否受到保护免受 SQL 注入等攻击。
假设我有一个使用 HTTP POST 将数据发送到 PHP 文件的表单。我在输入字段中输入以下内容并提交表单:
"Hello", said Jimmy O'Toole.
如果您在接收此 POST 数据的 PHP 页面上打印/回显输入,则会显示为:
\"Hello\", said Jimmy O\'Toole.
这是令人困惑的地方。如果我将此输入字符串放入 (My)SQL 并执行它,它会很好地进入数据库(因为引号被转义),但这会停止 SQL 注入吗?
如果我接受输入字符串并在其上调用类似mysqli real_escape_string
的东西,结果如下:
\\"Hello\\", said Jimmy O\\'Toole.
所以当它通过 (My)SQL 进入数据库时,它最终会变成:
\"Hello\", said Jimmy O\'Toole.
这显然有太多的斜线。
因此,如果输入通过 HTTP POST 转义,您是否必须再次转义以使其对(My)SQL 安全?或者我只是在这里没有看到明显的东西?
提前感谢您的帮助。