-1

我写了一个运行良好的博客系统,除了一件小事。我正在使用一个mysqli::real_escape_string来防止系统暴露于 SQL 注入。但是,如果有人写了带有“或'的评论,这些评论将显示为\”或\',这并不完全是用户友好的。

有没有办法防止这些被写入,或者在与 PHP 相呼应之前将它们删除?

4

1 回答 1

0

在您的情况下,转义发生两次(可能是因为启用了设置“magic_quotes_gpc=On”)

例子:

Is your name O'reilly?

当这个参数传输 browser (client) -> php (web-server) with magic_quotes_gpc = on

Is your name O\'reilly?

然后你的代码 mysqli_real_escape_string

Is your name O\\\'reilly?

结果存储在表中:

Is your name O\'reilly?

结论:

过时的设置«magic_quotes_gpc»禁用。

笔记。在这种情况下,当 sql 查询更方便使用«prepared statements»时,为了防止 SQL 注入,参数不需要转义。

于 2013-08-28T00:29:13.370 回答