我有一个PHP搜索建议脚本,它使用MySQL作为后端。我知道我的代码中有很多vunerabilities,我只是想知道我能做些什么来使它更安全。
这是我的代码:
<?php
$database=new mysqli('localhost','username','password','database');
if(isset($_POST['query'])){
$query=$database->real_escape_string($_POST['query']);
if(strlen($query)>0){
$suggestions=$database->query(
"SELECT * FROM search WHERE name LIKE '%" . $query .
"%' ORDER BY value DESC LIMIT 5");
if($suggestions){
while($result=$suggestions->fetch_object()){
echo '<a>'.$result->name.'</a>';
}
}
}
}
?>
答案 0 :(得分:4)
实际上没有,考虑到你正在逃避SQL
中唯一的外部值无论如何,我建议您使用PDO::prepare
进行查询。访问此处获取更多信息
http://it.php.net/manual/en/pdo.prepare.php
示例:
$sth = $dbh->prepare('SELECT * FROM article WHERE id = ?');
$sth->execute(array(1));
$red = $sth->fetchAll();
答案 1 :(得分:3)
我的一些提示: