ホームページ >バックエンド開発 >PHPチュートリアル >mysql_real_escape_string は SQL インジェクションに対して十分な保護を提供しますか?
mysql_real_escape_string はユーザー入力を安全にクリーンアップできますか?
SQL インジェクションを懸念して、開発者はユーザー入力をクリーンアップするために mysql_real_escape_string を使用することがよくあります。ただし、その有効性は、唯一の尺度としての信頼性について疑問を引き起こします。
mysql_real_escape_string の制限
mysql_real_escape_string は便利なユーティリティですが、次のような制限があります。
より堅牢なアプローチ: 準備されたステートメント
セキュリティを強化するため、開発者はプリペアドステートメントを利用することを推奨します。このアプローチでは、プレースホルダーを利用してユーザー データを SQL クエリから分離し、入力の改ざんを防ぎます。以下に例を示します。
$stmt = $dbh->prepare("INSERT INTO REGISTRY (name, value) VALUES (?, ?)"); $stmt->bindParam(1, $name); $stmt->bindParam(2, $value);
プリペアド ステートメントにはいくつかの利点があります。
追加の安全対策
準備されたステートメントとは別に、次の使用を検討してください。
結論
セキュリティを最適化するには、mysql_real_escape_string だけでは十分ではありません。代わりに、SQL インジェクションに対する主な保護としてプリペアド ステートメントを組み込みます。さらに、ユーザー入力のクリーニングに対する包括的なアプローチとして、HTMLPurifier と厳密な入力検証の採用を検討してください。
以上がmysql_real_escape_string は SQL インジェクションに対して十分な保護を提供しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。