0

我有一个复杂的表格,我首先必须获取一些$_GET参数,显然我必须对它们做一个mysql_real_escape_string(),因为我用它们在数据库中查找东西。

他们的问题是在最初的数据库查找之后。当用户提交表单时,我将它们作为$_POST请求发送,显然必须mysql_real_escape_string再次进行此调用,以防有人试图通过伪造的表单提交来入侵我的网站。

然后我遇到的问题是参数被转义了两次,我的查询开始看起来很奇怪,如下所示:

select field1 , field2 , from my_table where some_id = \'.$lookup_id.\' ...

所以系统似乎正在添加 \' 并且它让我感到困惑:) 另外,在我的其他形式中,我还没有看到这种行为。关于可能导致这种情况的任何想法?

一件奇怪的事情是我试图向帖子发送未转义的参数,并且发生了同样的问题。这是一个线索,但对我来说还不够。:(

4

3 回答 3

3

stripslashes http://php.net/manual/en/function.stripslashes.php函数可能有用 - 在你转义之前运行它?

于 2011-03-05T15:29:52.397 回答
3

在您的 php 中查看此设置:

http://www.tizag.com/phpT/php-magic-quotes.php

于 2011-03-05T15:32:56.253 回答
0

您应该使用被认为更安全的预处理语句,因为用户提交的字符串永远不会被解析为 SQL 语句,从而降低了 sql 注入风险。由于未解析用户字符串,因此您无需转义特殊字符。

于 2011-03-05T15:42:12.807 回答