安全な MySQL 接続のための PHP のパラメータ化されたクエリ
SQL インジェクションは依然として永続的なセキュリティ脅威であり、データベース アプリケーション内の機密データを侵害する可能性があります。パラメータ化されたクエリは、このリスクを軽減するための重要な手法です。ただし、これらを正しく実装するには、クエリ自体だけでなくデータベース接続プロセスについても理解する必要があります。
PHP ログイン ページの次のコード スニペットを考えてみましょう。
<code class="php">$query = "SELECT * FROM users WHERE username = '$userName' AND password = '$userPass'"; $result = mysqli_query($dbc, $query); $row = mysqli_fetch_array($result);</code>
このコードは次の脆弱性があります。ユーザー指定の入力 $userName と $userPass がクエリ文字列に直接含まれているため、SQL インジェクションが行われます。
パラメータ化されたクエリを実装するには、このコードを次のものに置き換えます。
<code class="php">$stmt = mysqli_prepare($dbc, "SELECT * FROM users WHERE username = ? AND password = ?"); mysqli_stmt_bind_param($stmt, "ss", $userName, $userPass); mysqli_stmt_execute($stmt); $row = mysqli_stmt_fetch($stmt);</code>
この中で改善されたコード:
セキュリティを強化するために、ユーザー パスワードを暗号化またはハッシュすることを忘れないでください。パラメーター化されたクエリとこれらの追加対策により、PHP アプリケーションでの MySQL データベースの安全な相互作用が保証されます。
以上がPHP のパラメータ化されたクエリは、MySQL データベースでの SQL インジェクションからどのように保護できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。