ホームページ >バックエンド開発 >PHPチュートリアル >PHP MySQLi アプリケーションでの SQL インジェクションを効果的に防ぐにはどうすればよいですか?

PHP MySQLi アプリケーションでの SQL インジェクションを効果的に防ぐにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-19 09:00:04946ブラウズ

How can I effectively prevent SQL injection in my PHP MySQLi application?

PHP MySQLI: SQL インジェクションの防止

SQL インジェクションは、Web アプリケーションの脆弱性を悪用して悪意のある SQL クエリを実行する一般的な攻撃手法です。これを防ぐには、適切なセキュリティ対策を実装することが重要です。

パラメータ化されたクエリ

推奨されるアプローチは、パラメータ化されたクエリを使用することです。これには、クエリ内でプレースホルダー (?) を使用し、それらのプレースホルダーに変数をバインドすることが含まれます。 MySQLi は、ステートメントを準備し、パラメータをバインドし、クエリを実行するためのメソッドを提供します。このアプローチを使用すると、MySQLi が悪意のある文字を自動的にエスケープするため、SQL インジェクションのリスクを排除できます。

$stmt = $mysqli->prepare("SELECT col1 FROM t1 WHERE col2 = ?");
$stmt->bind_param("s", $col2_arg);
$stmt->execute();

サニタイズ

一方、パラメーター化されたクエリは、悪意のある文字に対する主な防御手段です。 SQL インジェクションでは、ユーザー入力をサニタイズすることをお勧めします。これは、mysqli_real_escape_string() などの関数を使用するか、正規表現を使用して入力を検証することによって実行できます。

その他のセキュリティ対策

SQL インジェクションの防止に加えて、次のことを実装する必要があります。その他のセキュリティ対策:

  • 入力検証: すべてのユーザー入力を検証して、期待を満たしていることを確認します。
  • XSS 保護: サニタイズクロスサイト スクリプティング (XSS) 攻撃の入力。
  • CSRF 保護: CSRF トークンを実装して、不正なアクションを防止します。
  • SSL/TLS 暗号化: 転送中のデータを暗号化して盗聴から保護します。
  • 定期的なセキュリティ監査: アプリケーションの脆弱性を定期的に確認します。

これらの対策を実装することで、効果的にPHP MySQLI アプリケーションを SQL インジェクションやその他のセキュリティ脅威から保護します。

以上がPHP MySQLi アプリケーションでの SQL インジェクションを効果的に防ぐにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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