我的代码会阻止SQL注入

时间:2013-08-11 23:01:31

标签: mysql sql-injection

我搜索并添加了一些预防代码,但我需要专家建议,我是否正确?

我已经为SQL连接制作了单独的文件,但我是否应该使用include,require,include_onces或其他任何其他文件?

mysql_connect("localhost", "userr", "pass") or die(mysql_error()) ; 
mysql_select_db("databse") or die(mysql_error()) ;

此处我添加了两项UTF8mysql_real_escape_string

$bad='anyone123';

$var = mysql_real_escape_string($bad);
$q = mysql_query('SET user_id UTF8');
$q = mysql_query("SELECT * FROM fbusers WHERE user_id = '$var'");
$r = mysql_fetch_array($q);

如果我能防止注射,请给我建议。到100% 我不希望我的网站被黑客攻击:(

谢谢

1 个答案:

答案 0 :(得分:0)

您需要为任何需要用户输入的查询使用预准备语句。这会单独发送查询和参数,并作为一个安全层来捕获任何恶意输入。

在PDO中:

$stmt = $pdo->prepare("SELECT * FROM fbusers WHERE user_id = :var");

$stmt->execute(array(':var'=>$var));

在mysqli:

$stmt = $dbConnection->prepare('SELECT * FROM fbusers WHERE user_id = ?');
$stmt->bind_param('s', $var);

$stmt->execute();

也许this post会有所帮助。