PHP インジェクション攻撃を防ぐ方法には次のようなものがあります。 パラメーター化されたクエリを使用して SQL インジェクションを防ぎます。フィルター入力関数を使用して、渡された値をフィルターします。特殊文字をエスケープするには、mysqli_real_escape_string() 関数を使用します。ホワイトリストとブラックリストの検証を使用して、危険な文字やパターンをフィルタリングします。
PHP インジェクション攻撃を防ぐ効果的な方法
PHP インジェクション攻撃は、PHP アプリケーションの脆弱性を悪用して悪意のあるデータを挿入する方法です。 SQL クエリの攻撃タイプ。このような攻撃は、データ漏洩、データベース破損、さらにはシステム乗っ取りにつながる可能性があります。
予防方法
1. パラメータ化されたクエリ
パラメータ化されたクエリを使用すると、SQL インジェクション攻撃を防ぐことができます。この手法では、プレースホルダー (?) を使用して SQL クエリ内の実際の値を置き換え、クエリを実行する前にその値を MySQL に渡します。
サンプル コード:
$stmt = $conn->prepare("SELECT * FROM users WHERE username = ?"); $stmt->bind_param("s", $username);
2. フィルター関数
を使用して入力をフィルターし、インジェクション攻撃を防ぎます。受信値は、PHP の filter_input()
関数を使用してフィルタリングできます。
サンプルコード:
$username = filter_input(INPUT_POST, 'username', FILTER_SANITIZE_STRING);
3. 特殊文字をエスケープするには、mysqli_real_escape_string()# を使用できます。 # # 関数は、入力された特殊文字が SQL コマンドとして解釈されないようにエスケープします。
サンプル コード:
$username = mysqli_real_escape_string($conn, $username);
4. ホワイトリストとブラックリストの検証を使用する
ホワイトリストとブラックリストの検証により、危険な文字を除外できます。またはパターン。
サンプル コード:// 白名单 $allowed_chars = ['a', 'b', 'c']; if (!in_array($char, $allowed_chars)) { // 输出错误消息 } // 黑名单 $banned_chars = ['<', '>', '"', '\'']; if (preg_match('/[' . implode('', $banned_chars) . ']/', $input)) { // 输出错误消息 }
実用的なケース
次は、パラメーター化されたクエリとフィルター関数の使用方法のデモンストレーションです。インジェクション攻撃を防ぐには コード例: これらの予防策を実装することで、PHP アプリケーションをインジェクション攻撃から保護できます。 以上がPHP インジェクション攻撃を防ぐ効果的な方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。// 获取用户输入
$username = filter_input(INPUT_POST, 'username', FILTER_SANITIZE_STRING);
// 准备和执行查询
$stmt = $conn->prepare("SELECT * FROM users WHERE username = ?");
$stmt->bind_param("s", $username);
$stmt->execute();