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

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

小云云
リリース: 2023-03-20 14:02:01
オリジナル
1581 人が閲覧しました

最近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 サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート