我只想知道我的代码在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();
}
}
}
?>
准备好的查询不受 SQL 注入的影响,因为这些值不会与 SQL 代码混合。
您正在使用PDO
并且正在使用预准备语句,因此您的代码不容易受到SQL注入的攻击。
据我所知,密码也在数据库中进行了哈希处理,并且由于您使用password_verify
来验证密码,因此我假设密码是用password_hash
哈希的。
总的来说,你的代码看起来很安全