ホームページ >データベース >mysql チュートリアル >PHP のパラメータ化されたクエリは SQL インジェクションからどのように保護されますか?
MySQL 接続を使用した PHP のパラメータ化されたクエリ
Web 開発の領域では、SQL インジェクションは重大なセキュリティ上の脅威を引き起こします。悪意のあるクエリをでっち上げることで、攻撃者は認証メカニズムをバイパスし、機密データにアクセスすることができます。パラメータ化されたクエリは、この脆弱性に対する確実な解決策を提供します。
SQL インジェクションに対する保護が不十分な PHP ログイン ページのコードのスニペットを考えてみましょう。
<code class="php">$userName = $_POST["username"]; $userPass = $_POST["password"]; $query = "SELECT * FROM users WHERE username = '$userName' AND password = '$userPass'"; $result = mysqli_query($dbc, $query); $row = mysqli_fetch_array($result); if (!$row) { echo "No existing user or wrong password."; }</code>
パラメータ化されたクエリを使用するには、データベースへの接続を確立し、パラメータ化されたステートメントを準備する必要があります。次のコードは、変更された例を示しています。
<code class="php">$stmt = mysqli_prepare($dbc, "SELECT * FROM users WHERE username = ? AND password = ?"); mysqli_stmt_bind_param($stmt, "s", $userName); mysqli_stmt_bind_param($stmt, "s", $userPass); mysqli_stmt_execute($stmt); $row = mysqli_stmt_fetch($stmt);</code>
コードの内訳は次のとおりです。
このパラメーター化されたクエリでは、プレースホルダーはバインドされた値に置き換えられるため、悪意のある入力の挿入を防ぎます。さらに、セキュリティを強化するにはパスワードを暗号化またはハッシュ化し、平文パスワードの保存を避けることが不可欠です。パラメーター化されたクエリを採用することで、PHP 開発者は Web アプリケーションを SQL インジェクション攻撃から効果的に保護できます。
以上がPHP のパラメータ化されたクエリは SQL インジェクションからどのように保護されますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。