【发布时间】:2011-10-27 04:23:12
【问题描述】:
我是 PHP 新手,即将推出。我正在使用 mysql_real_escape_string();对于所有用户输入和所有 $_GET 和 $_REQUEST 变量。我想测试它,但不确定它是如何完成的,所以我可以防止它并采取适当的措施。
【问题讨论】:
标签: php sql security code-injection
我是 PHP 新手,即将推出。我正在使用 mysql_real_escape_string();对于所有用户输入和所有 $_GET 和 $_REQUEST 变量。我想测试它,但不确定它是如何完成的,所以我可以防止它并采取适当的措施。
【问题讨论】:
标签: php sql security code-injection
尝试在所有表单字段(包括隐藏字段)中输入类似于以下字符串的字符串:
blah'"blah
如果你没有正确地转义它,你会得到一个 sql 错误。如果您收到该 sql 错误,那么您应该能够弄清楚如何编写一个查询,该查询执行的操作与原始查询不同。
【讨论】:
我正在使用 mysql_real_escape_string();对于所有用户输入和所有 $_GET 和 $_REQUEST 变量
好吧,你完全错了。
首先,mysql_real_escape_string() 与“用户输入”无关。这是与数据库相关的功能,与用户无关。
接下来,它与“所有输入”无关,因为它的使用仅限于字符串。所以,如果你有这样的代码
$id = mysql_real_escape_string($_GET['id']);
$sql = "SELECT * FROM table WHERE id=$id";
你在这里逃脱绝对没用,什么也没有保护。
至于测试 - 这有点棘手。不过,网上有一些工具,我相信你可以google一些。
【讨论】:
http://localhost/vuln.php?id=sleep(30)