ホームページ > データベース > mysql チュートリアル > MySQLi を使用して PHP アプリケーションでの SQL インジェクションを効果的に防ぐにはどうすればよいですか?

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

Barbara Streisand
リリース: 2024-12-18 13:28:15
オリジナル
443 人が閲覧しました

How Can I Effectively Prevent SQL Injection in My PHP Application Using MySQLi?

MySQLi を使用した PHP での SQL インジェクションの防止

SQL インジェクションを回避することは、PHP ベースの Web サイトを保護するために重要です。 mysqli_real_escape_string は保護を提供しますが、その適切な使用法を考慮し、追加のセキュリティ対策を講じることが重要です。

mysqli_real_escape_string の範囲

最初に考えていたこととは異なり、これは不可欠ですSQL で使用されるすべての変数に mysqli_real_escape_string を適用するにはステートメントは、その性質に関係なく。 SELECT ステートメント、挿入、更新、削除はすべて SQL インジェクションの影響を受けやすくなります。入力をサニタイズしないと、脆弱性が発生する可能性があります。

パラメータ化されたクエリとプリペアド ステートメント

SQL インジェクションを防ぐための堅牢なアプローチには、パラメータ化されたクエリの使用が含まれます。この手法は、文字列の直接連結をプレースホルダー (?) に置き換えます。パラメータ化されたクエリを実行する場合、引数値はパラメータとして個別に指定されます。このアプローチにより、悪意のある入力が SQL ステートメントの構造に影響を及ぼし、注入の試行が無駄になるのを防ぎます。

MySQLi では、prepare メソッドでステートメントを準備し、bind_param を使用して変数をプレースホルダーにバインドすることでこれを実現できます。クエリを実行するには、execute:

$stmt = $mysqli->prepare("SELECT col1 FROM t1 WHERE col2 = ?");
$stmt->bind_param("s", $col2_arg);
$stmt->execute();
ログイン後にコピー

追加のセキュリティを使用します。対策

SQL インジェクションの防止以外にも、Web サイトの回復力を強化するために追加のセキュリティ対策を実装することを検討してください。

  • 入力検証 (データ型チェックなど)
  • クロスサイト スクリプティング (XSS) 保護
  • クロスサイト リクエスト フォージェリ(CSRF) 防止
  • 機密データの暗号化
  • Web アプリケーション ファイアウォール (WAF) の使用

これらのベスト プラクティスを遵守し、パラメーター化された機能を活用することにより、クエリを使用すると、PHP ベースの Web サイトに対する SQL インジェクション攻撃のリスクを大幅に軽減できます。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート