動的テーブル名による SQL インジェクションを防ぐ方法
最近の議論で強調されているように、SQL インジェクションを防ぐために PDO または mysql_real_escape_string に依存する動的テーブル名を使用した場合は効果がありません。これらの対策は「品質が非常に低い」という主張に反して、堅牢なセキュリティのためには、なぜ不十分なのかを理解することが重要です。
mysql_real_escape_string の制限
mysql_real_escape_string はエスケープするように設計されています。引用符で囲まれた文字列データ。バックティック文字 (`) をエスケープしないため、動的テーブル名の処理に失敗します。文字列をバッククォートで終了するだけで注入できるため、これはセキュリティ上の脆弱性を引き起こします。
PDO のサポートの欠如
PDO は動的ファイルのサニテーションも提供しません。テーブル名。これは、テーブル名を識別子として考慮し、自動的にエスケープしないという事実に起因します。
ベスト プラクティス
これらのリスクを軽減するには、次のことを避けることをお勧めします。可能な限り動的テーブル名を使用します。ただし、それが避けられない場合は、次の対策を検討してください:
これらの手法を開発実践に組み込むことで、開発者は動的テーブル名を悪用する SQL インジェクション攻撃を効果的に防ぐことができます。
以上が動的テーブル名を使用する場合、SQL インジェクションからデータベースを保護するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。