PHP Web サイトのデータベースを SQL インジェクション攻撃から保護するにはどうすればよいですか?
概要:
PHP Web サイトを開発および保守する場合、SQL インジェクション攻撃からデータベースを保護することが重要です。 SQL インジェクション攻撃は一般的なサイバーセキュリティの脅威であり、攻撃者が悪意のある入力でデータベースになりすまし、データの漏洩、破損、または損失を引き起こす可能性があります。この記事では、PHP Web サイトのデータベースを SQL インジェクション攻撃から保護するための一般的な予防策とベスト プラクティスについて説明します。
$pdo = new PDO("mysql:host=localhost;dbname=mydb", "username", "password"); $username = $_POST['username']; $password = $_POST['password']; $stmt = $pdo->prepare('SELECT * FROM users WHERE username = :username AND password = :password'); $stmt->bindParam(':username', $username); $stmt->bindParam(':password', $password); $stmt->execute(); $result = $stmt->fetch();
filter_var()
、filter_input()
などのフィルター関数を使用して、入力をフィルター処理およびクリーンアップできます。以下は、フィルター関数を使用してユーザー入力をフィルター処理する例です: $username = $_POST['username']; $password = $_POST['password']; $filteredUsername = filter_var($username, FILTER_SANITIZE_STRING); $filteredPassword = filter_var($password, FILTER_SANITIZE_STRING); // 继续处理过滤后的输入,如参数化查询、密码哈希等
$userInput = $_POST['input']; // 不推荐的做法 $query = "SELECT * FROM users WHERE username = '" . $userInput . "'"; $result = $pdo->query($query); // 推荐的做法 $stmt = $pdo->prepare('SELECT * FROM users WHERE username = :username'); $stmt->bindParam(':username', $userInput); $stmt->execute(); $result = $stmt->fetch();
概要:
PHP Web サイトのデータベースを SQL インジェクション攻撃から保護することは、重要なタスクです。この記事では、パラメータ化されたクエリとプリペアド ステートメントの使用、入力検証とフィルタリング、データベース アカウントのアクセス許可の厳密な制限、SQL クエリの直接結合の回避、データベース ソフトウェアの定期的な更新と保守、ファイアウォールとセキュリティ プラグインの使用など、いくつかの一般的な予防策とベスト プラクティスを提案します。 、など。これらの対策を講じることにより、PHP Web サイトのデータベースを SQL インジェクション攻撃の脅威から効果的に保護できます。
以上がPHP Web サイトのデータベースを SQL インジェクション攻撃から保護するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。