我搜索并添加了一些预防代码,但我需要专家建议,我是否正确?
我已经为SQL连接制作了单独的文件,但我是否应该使用include,require,include_onces或其他任何其他文件?
mysql_connect("localhost", "userr", "pass") or die(mysql_error()) ;
mysql_select_db("databse") or die(mysql_error()) ;
此处我添加了两项UTF8
和mysql_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% 我不希望我的网站被黑客攻击:(
谢谢
答案 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会有所帮助。