ホームページ >バックエンド開発 >PHPチュートリアル >PHP 言語開発における SQL インジェクション攻撃を防ぐにはどうすればよいですか?
Web サイト開発のプロセスにおいて、SQL インジェクション攻撃は一般的なセキュリティ脆弱性であり、攻撃者が Web サイトの機密データを取得したり、悪意を持って SQL コードを挿入して Web サイトを制御したりすることができます。バックエンド言語としてよく使われるPHPについて、PHP言語開発におけるSQLインジェクション攻撃を防ぐ方法を紹介します。
// 创建PDO对象 $pdo = new PDO("mysql:host=localhost;dbname=test", "root", "password"); // 创建预处理语句对象 $stmt = $pdo->prepare("SELECT * FROM users WHERE username = :username AND password = :password"); // 绑定参数 $username = $_POST['username']; $password = $_POST['password']; $stmt->bindParam(":username", $username); $stmt->bindParam(":password", $password); // 执行语句 $stmt->execute();
プレースホルダーとバインド パラメーターを通じて、SQL インジェクション攻撃によって引き起こされるセキュリティ問題を回避できます。
// 过滤输入的字符串 $username = filter_var($_POST['username'], FILTER_SANITIZE_STRING); // 转义输入的字符串 $username = mysqli_real_escape_string($connection, $_POST['username']);
このうち、FILTER_SANITIZE_STRING
関数は文字列内のラベルと特殊文字をフィルタリングし、mysqli_real_escape_string
関数は特殊文字をフィルタリングします。入力データのエスケープで。
// 验证邮箱地址 if (!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) { echo "Email is not valid"; } // 验证手机号 if (!preg_match("/^[0-9]{11}$/", $_POST['phone'])) { echo "Phone number is not valid"; }
データ検証を実行するときは、データが正しいことを確認するために、特定の入力データに対して特定の検証を実行する必要があります。合法的、セックス。
要約すると、PHP 言語開発における SQL インジェクション攻撃を防ぐ方法には、パラメータ化されたクエリの使用、入力データのフィルタリングとエスケープ、入力データの検証、データベース権限の最小化などが含まれます。開発者はセキュリティ意識を強化し、Web サイトのセキュリティを確保するための効果的な対策を講じる必要があります。
以上がPHP 言語開発における SQL インジェクション攻撃を防ぐにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。