動的テーブル名による SQL インジェクションの防止
SQL インジェクションの防止に関する議論に応えて、PDO または mysql_real_escape_string を使用することが提案されています。動的テーブル名の保護には効果がありません。ただし、さらなる分析により、特定の状況下でのこれらの提案の有効性が明らかになります。
mysql_real_escape_string の制限
mysql_real_escape_string は引用符内の文字列データを効果的にエスケープしますが、動的データを扱う場合は不十分です。テーブル名。エスケープ関数は引用符内の文字のみを対象とし、バックティック文字は変更されません。この見落としにより、攻撃者が入力に終了バックティックを組み込んで SQL インジェクションを実行する抜け穴が作成されます。
PDO の制限
mysql_real_escape_string と同様に、PDO は直接的な保護を提供しません。動的テーブル名を含む SQL インジェクションに対して。
推奨アプローチ
動的テーブル名を使用する場合の SQL インジェクションのリスクを軽減するには、代替戦略を採用することを強くお勧めします。
以上がSQL で動的テーブル名を安全に使用してインジェクションを防ぐにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。