我只是想知道我的代码在SQL注入中是否容易受到攻击 我有这个登录代码,我知道它是否可以安全使用,是否可以阻止任何SQL注入。
这是我的代码。
<?php
class LTID
{
private $db;
function __construct($DB_con)
{
$this->db = $DB_con;
}
public function login($username,$password)
{
try
{
$stmt = $this->db->prepare("SELECT * FROM users WHERE username=:username LIMIT 1");
$stmt->execute(array(':username'=>$username));
$userRow=$stmt->fetch(PDO::FETCH_ASSOC);
if($stmt->rowCount() > 0)
{
if(password_verify($password, $userRow['password']))
{
$_SESSION['user_session'] = $userRow['user_id']
return true;
}
else
{
return false;
}
}
}
catch(PDOException $e)
{
echo $e->getMessage();
}
}
}
?>
答案 0 :(得分:2)
准备好的查询不受SQL注入的影响,因为这些值不会与SQL代码混合在一起。
答案 1 :(得分:2)
您正在使用PDO
并且您正在使用预备语句,因此您的代码不会受到SQL注入攻击。
从我看到的密码也在数据库中进行了哈希处理,因为您使用password_verify
来验证密码,我认为密码是用password_hash
进行哈希处理的。
整体而言,您的代码看起来非常安全