我的问题不是需要帮助代码,但我只是想知道mysql_escape_string()是否使SQL注入不可能。
我看到很多人使用这个函数来实现sql-security。如果我使用mysql_escape_string(),我还需要使用参数查询吗?
还有,请你告诉我一个使用这个函数的好方法,还是mysql_escape_string($ string)就足够了?
如果mysql_escape_string()不是一个好习惯..请你解释一下如何在查询字符串中使用参数,这样我才能理解它。我知道如何在VB.net中使用参数和东西,但是当我在php和mysql中使用参数时我已经迷失了。
提前致谢:)。
答案 0 :(得分:2)
不要问“我还需要使用参数吗?”,请关闭训练轮并使用参数化查询。
StackOverflow经验丰富的人不会因为我们没有更好的事情可以一遍又一遍地说“使用参数化查询”。
有关如何在PHP中使用参数化查询的示例,请参阅http://bobby-tables.com/php
答案 1 :(得分:2)
如果mysql_escape_string()无法进行SQL注入。
mysql_escape_string()实际上无关到SQL注入
我看到很多人将这个功能用于sql-security。
确实很多。他们都处于危险之中。
如果我使用mysql_escape_string(),我是否还需要使用参数查询?
相反,如果您使用参数,则不需要此功能。
还可以告诉我一个使用此功能的好方法
是的,我可以。您可以在自己的参数化查询实现中使用此函数。这是使用此功能的唯一正确方法。但是,它不是必需的,因为您可以使用驱动程序提供的现成参数
如果mysql_escape_string()不是一个好习惯。
是。但只有在这些条件下:
您能否向我解释如何在查询字符串中使用参数
我希望你喜欢PDO tag wiki
中的解释答案 2 :(得分:1)
我建议您使用PDO的参数化查询。这就是你所需要的,所以不要担心mysql_escape_string()
(不管怎样都会弃用)。
以下是有关如何使用PDO的教程:http://www.phpro.org/tutorials/Introduction-to-PHP-PDO.html
如果我不够清楚,任何传递到您的查询中的源自脚本外部的变量(或任何可能包含恶意代码的内容)都应该为您的PDO语句设置参数,这些将是为你逃脱。