是我的代码易受SQL注入攻击

时间:2016-04-28 07:21:30

标签: php sql

我只是想知道我的代码在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();
     }
   }
 }
 ?>

2 个答案:

答案 0 :(得分:2)

准备好的查询不受SQL注入的影响,因为这些值不会与SQL代码混合在一起。

答案 1 :(得分:2)

您正在使用PDO并且您正在使用预备语句,因此您的代码不会受到SQL注入攻击。

从我看到的密码也在数据库中进行了哈希处理,因为您使用password_verify来验证密码,我认为密码是用password_hash进行哈希处理的。

整体而言,您的代码看起来非常安全