ホームページ >バックエンド開発 >PHPチュートリアル >PHP 関数「mysqli_real_escape_string」を使用して文字列内の特殊文字をエスケープし、SQL インジェクションを回避します
PHP 関数「mysqli_real_escape_string」を使用して文字列内の特殊文字をエスケープし、SQL インジェクションを回避します
はじめに: データベースと対話する Web サイト開発のプロセスでは、多くの場合、データベースと対話する Web サイト開発のプロセスで、入力されたデータを保存する必要があります。ユーザーをデータベースに登録します。ただし、ユーザーが入力したデータが処理されない場合、悪意のあるユーザーが入力したデータを使用して SQL インジェクション攻撃を実行し、データベースに重大な損害を与える可能性があります。この状況を回避するには、PHP 関数「mysqli_real_escape_string」を使用して、ユーザーが入力したデータをエスケープし、入力された文字列が SQL コードとして誤解されないようにすることができます。
SQL インジェクション: SQL インジェクションは、Web アプリケーションの脆弱性を悪用する攻撃手法です。攻撃者は、入力データに SQL コードを挿入することにより、データベース情報を変更または盗みます。これは、データ漏洩、データベースの破損、さらにはアプリケーション全体の直接の侵害につながる可能性がある一般的な攻撃方法です。
解決策: SQL インジェクション攻撃を防ぐために、PHP の「mysqli_real_escape_string」関数を使用して、ユーザーが入力したデータをエスケープできます。この関数は、データ内の特殊文字を処理して、SQL コードと間違われず、通常の文字列としてのみ扱われるようにします。
サンプル コード:
<?php // 连接到数据库 $mysqli = new mysqli("localhost", "root", "", "mydatabase"); // 检查连接是否成功 if ($mysqli->connect_errno) { echo "连接失败:" . $mysqli->connect_error; exit(); } // 获取用户输入 $username = $_POST['username']; $password = $_POST['password']; // 对用户输入进行转义 $username = mysqli_real_escape_string($mysqli, $username); $password = mysqli_real_escape_string($mysqli, $password); // 构建SQL查询语句 $query = "SELECT * FROM users WHERE username='$username' AND password='$password'"; // 执行查询 $result = $mysqli->query($query); // 检查查询结果 if ($result->num_rows > 0) { // 登录成功 echo "登录成功!"; } else { // 登录失败 echo "用户名或密码不正确!"; } // 关闭数据库连接 $mysqli->close(); ?>
上記のコードでは、まずデータベースへの接続を作成し、接続が成功したかどうかを確認します。次に、ユーザーが入力したユーザー名とパスワードを取得し、「mysqli_real_escape_string」関数を使用してエスケープします。次に、SQL クエリ ステートメントを作成し、クエリを実行します。最後に、クエリ結果を確認し、一致するユーザーがあればログインは成功とみなされ、そうでない場合はログインは失敗とみなされます。
要約: SQL インジェクション攻撃を防ぐには、ユーザーが入力したデータを常にエスケープする必要があります。 PHP は、このタスクの達成に役立つ「mysqli_real_escape_string」関数を提供します。この機能を利用することで、ユーザーが入力したデータがSQLコードと誤解されることがなくなり、データベースのセキュリティを効果的に保護できます。潜在的なセキュリティ リスクを軽減するために、データベースと対話する Web サイト開発ではこの機能を使用することを強くお勧めします。
以上がPHP 関数「mysqli_real_escape_string」を使用して文字列内の特殊文字をエスケープし、SQL インジェクションを回避しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。