我付钱给别人为我编写基本的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’ ] ) );
答案 0 :(得分:1)
如果您更具体地指SQL Injection,那么此语句足以阻止它,因为它使用prepared statement
,即它传递参数:serial
然后通过调用$count->bindParam(":serial",$serial);
来填充它。
SQL注入的风险是通过直接将SQL查询与用户输入连接而不进行清理来创建语句,例如:
请勿使用此类代码
$count=$db->prepare("SELECT * FROM users WHERE " . $_POST['serial'] . " LIMIT 1");