0

我的问题不是需要代码帮助,而是我想知道 mysql_escape_string() 是否使 SQL 注入成为不可能。

我看到很多人将此功能用于 sql-security。如果我使用 mysql_escape_string(),是否还需要使用参数查询?

你能告诉我一个使用这个函数的好方法还是 mysql_escape_string($string) 就足够了?

如果 mysql_escape_string() 不是一个好习惯。请向我解释如何在查询字符串中使用参数,以便我理解它。我知道如何在 VB.net 中使用参数和东西,但是在 php 和 mysql 中使用参数时我迷失了。

提前致谢 :)。

4

3 回答 3

2

与其问“我还需要使用参数吗?”,不如取下训练轮,只使用参数化查询。

StackOverflow 的有经验的人不会一遍又一遍地说“使用参数化查询”,因为我们没有更好的事情可做。

有关如何在 PHP 中使用参数化查询的示例,请参阅http://bobby-tables.com/php

于 2013-08-22T01:51:16.080 回答
2

如果 mysql_escape_string() 使 SQL 注入成为不可能。

mysql_escape_string() 实际上与SQL 注入无关

我看到很多人将此功能用于 sql-security。

确实很多。他们都处于危险之中。

如果我使用 mysql_escape_string(),是否还需要使用参数查询?

恰恰相反,如果你使用参数,你将不需要这个函数。

你能告诉我一个使用这个功能的好方法吗

是的我可以。您可以在自己的参数化查询实现中使用此函数。这是使用此功能的唯一正确方法。但这不是必需的,因为您可以使用驱动程序提供的现成参数

如果 mysql_escape_string() 不是一个好习惯。

是的。但仅在以下条件下:

  • 使用最新版本。
  • 它用于其真正目的,而不是防止注射
  • 用于处理参数

您能否向我解释一下如何在查询字符串中使用参数

我希望你喜欢PDO 标签 wiki中的解释

于 2013-08-22T14:45:46.293 回答
1

我建议您将参数化查询与PDO一起使用。这就是您所需要的,所以不用担心mysql_escape_string()(无论如何都已弃用)。

这里有一个关于如何使用 PDO 的教程:http ://www.phpro.org/tutorials/Introduction-to-PHP-PDO.html


万一我不够清楚,传递给您的查询的任何来自脚本外部的变量(或任何可能包含恶意代码的变量)都应该设置为您的 PDO 语句的参数,这些将被转义为你。

于 2013-08-22T01:56:37.087 回答