ホームページ  >  記事  >  データベース  >  SQL インジェクションを防ぐために PHP で MySQL 接続を使用してパラメータ化されたクエリを実装する方法

SQL インジェクションを防ぐために PHP で MySQL 接続を使用してパラメータ化されたクエリを実装する方法

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-01 07:36:30238ブラウズ

How to Implement Parameterized Queries with MySQL Connection in PHP to Prevent SQL Injection?

PHP での MySQL 接続を使用したパラメータ化されたクエリ

データベース アプリケーションのセキュリティを確保することが最優先であり、パラメータ化されたクエリは SQL に対する重要な防御手段です。注射攻撃。この手法には、直接 SQL 構文ではなくパラメーターとしてユーザー入力を処理することが含まれており、悪意のある文字操作を効果的に防止します。

コード内で、ユーザー名とパスワードのパラメーターの連結を使用する安全でないアプローチは、インジェクションに対して脆弱です。これを修正するには、次の手順に従います。

  1. パラメータ化されたクエリを準備します。

    <code class="php">$stmt = mysqli_prepare($dbc, "SELECT * FROM users WHERE username = ? AND password = ?");</code>

    これにより、プレースホルダー (?) を含むステートメントが準備されます。渡されるパラメータ。

  2. バインドパラメータ:

    <code class="php">mysqli_stmt_bind_param($stmt, "ss", $userName, $userPass);</code>

    ここで、「ss」はパラメータのタイプ (2 つの文字列) を指定します。 $userName と $userPass はこれらのパラメータにバインドされています。

  3. ステートメントを実行します:

    <code class="php">mysqli_stmt_execute($stmt);</code>

    これにより、バインドされたパラメータ化されたクエリが実行されます。 parameters.

  4. Fetch Results:

    <code class="php">$row = mysqli_stmt_fetch($stmt);</code>

    これにより結果行が取得され、その行の存在やさらなる操作を確認できます。

追加の推奨事項:

  • ユーザー パスワードをプレーン テキストで保存するのではなく、セキュリティを向上させるためにハッシュします。
  • 検証ユーザー入力が期待される形式と型に準拠していることを確認します。
  • パフォーマンスの最適化のためにデータベース接続プーリングを利用します。

これらの手順に従うことで、PHP アプリケーションとそのセキュリティを強化できます。 SQL インジェクションの脆弱性から保護します。パラメータ化されたクエリは最新のデータベース プログラミングにおいて不可欠な手法であり、ユーザー入力処理には常に使用する必要があることを覚えておいてください。

以上がSQL インジェクションを防ぐために PHP で MySQL 接続を使用してパラメータ化されたクエリを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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