3

我使用 smarty 和mysql_real_escape_string()用于用户输入,当我使用'or插入一些代码"并在 phpmyadmin 中查找时,它显示没有反斜杠。

当我从 DB 获取记录时,我也没有反斜杠。但是当我只是传递转义字符串而不插入数据库时​​,它是反斜杠的。

它不应该添加斜杠,插入它们,然后在输出时将它们剥离吗?还是我错过了什么?

4

1 回答 1

12

你错过了 - 用反斜杠转义是为了确保查询没有格式错误,例如,这样的事情肯定会中断并可能冒 SQL 注入的风险:

insert into table values ('whatever 'this' is')

并且不会在表中保存任何内容,而这个:

insert into table values ('whatever \'this\' is')

将在表中保存值“无论 'this' 是什么”。

于 2008-11-10T11:03:30.803 回答