mysql_num_rows和SQL注入

时间:2014-01-07 15:45:57

标签: php sql sql-injection

使用此代码是否安全?

$check = mysql_query("SELECT id FROM table WHERE nick='asd'");
$count = mysql_num_rows($check);

我只需要行数。 id是AUTO_INCREMENT

2 个答案:

答案 0 :(得分:4)

如果'asd'是一个常数并且与任何(用户)输入无关,那么它是安全的。

否则你应该用bind变量替换它并使用预准备语句或至少正确地转义它。 (但是很容易忘记转义,所以尝试使用绑定变量是一种更好的做法。)

答案 1 :(得分:1)

NO。绝对不是。

首先,阅读MySQLi。我代表着改进。其次,使用准备好的陈述。这可以防止注射。阅读here

$db = new mysqli("localhost", "DATABASE-NAME", "DATABASE-USER", "DATABASE-PASS");
$check = $db->prepare("SELECT `id` FROM `table` WHERE `nick` = ?");
$check->bind_param('s', $nickVar);
$check->execute();

不要采取简单的方法。保持安全,直到它自然而然。我曾经都是关于快速入侵,快速开始工作,快速写下一些东西,但最后,最好习惯于良好的练习。