此代码是否可以利用? (PHP)

时间:2015-10-22 05:37:57

标签: php mysql sql-injection

我付钱给别人为我编写基本的PHP脚本代码,所以我不记得我的愚蠢问题。我只想保证用户的安全。

此代码是否可利用,如果是,我该如何解决?

if(isset($_POST['serial'])){
    $serial = $_POST['serial'];
    $count=$db->prepare("SELECT * FROM users WHERE serial=:serial LIMIT 1");
    $count->bindParam(":serial",$serial);
    $count->execute();
    $no=$count->rowCount();

    if($no >0 ) {
        echo "User Found";
    } else {
        echo "User Not Found";
    }
}

我猜我需要清理'连续'以确保没有注射尝试。有什么代码可以帮我吗?这样的事情会起作用吗?

$name = strip_tags(trim( $_POST[ ‘name’ ] ) );

1 个答案:

答案 0 :(得分:1)

如果您更具体地指SQL Injection,那么此语句足以阻止它,因为它使用prepared statement,即它传递参数:serial然后通过调用$count->bindParam(":serial",$serial);来填充它。

SQL注入的风险是通过直接将SQL查询与用户输入连接而不进行清理来创建语句,例如:

请勿使用此类代码

$count=$db->prepare("SELECT * FROM users WHERE " . $_POST['serial'] .  " LIMIT 1");