ホームページ >バックエンド開発 >PHPチュートリアル >PHP および Mysql ログイン機能により SQL インジェクションが防止される

PHP および Mysql ログイン機能により SQL インジェクションが防止される

小云云
小云云オリジナル
2018-02-27 10:40:051580ブラウズ

最近SQLインジェクションについて知ったのですが、多くの人が使っているログイン機能は、ユーザーが同時に入力したユーザー名とパスワードをSQL文に組み込んで、そのクエリで結果があるかどうかでログインが可能かどうかを判定していることがわかりました。 。例:


  1. <?php  
    $username = $_POST[&#39;username&#39;];  
    $password = $_POST[&#39;password&#39;];  
    $sql = "select * from user where username=&#39;{$username}&#39; and password=&#39;{$password}&#39; ";  
    $this->db->query($sql);

これは単なる例ですが、現在、多くのフレームワークで ' または 1=1 -- インジェクションを追加することができます。注意しないと、最終的に結合されたステートメントは次のようになります。ここでは、入力パラメータのフィルタリング、パラメータのバインド、構文分析、および SQL インジェクションに対処するその他の一般的な方法については説明しませんが、判断方法を変更できます:

  1. <?php  
    $username = $_POST[&#39;username&#39;];  
    $password = $_POST[&#39;password&#39;];  
    $sql = "select * from user where username=&#39;{$username}&#39; ";  
    $data = $this->db->query($sql);  
      
    ......  
      
    if($data[&#39;password&#39;] == $password){  
        //密码OK  
    }else{  
        //密码错误  
    }


このように、まず、データを取得してからphpを使用します パスワードが一致するかどうかを判断することで問題は解決しますか?

関連する推奨事項:

SQL インジェクションを防ぐための推奨 10 の方法

以上がPHP および Mysql ログイン機能により SQL インジェクションが防止されるの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。