保护PHP MySQL代码

时间:2011-06-01 23:36:48

标签: php mysql

我有一个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>';                       
            }
        }
    }
}
?>

2 个答案:

答案 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)

我的一些提示:

  • 使用PDO,
  • 不连接查询参数,在PDO中使用预处理语句,
  • 不要在SELECT语句中加上“*”,只获取您需要的列
  • 在PDO中使用fetchAll(),不要在while()循环中获取记录。