Webシステムに限らず、
Webアプリケーションにおけるエスケープ処理というとHTMLとSQLのエスケープ処理が例として挙げられますが、
Webアプリケーションから見た外部システムの一例
- ブラウザ
- ブラウザのプラグイン
- ブラウザのスクリプト実行環境
- データベース
- メールサーバ
- Webサービス
- ディレクトリサーバ
- ファイルシステム
- コマンド実行環境
- 外部システムによって処理されるすべてのファイル
(XMLファイル、 YAMLファイルなど) - ライブラリ関数
エスケープ処理が必要なデータだけエスケープするのではなく、
エスケープを行わない
対策のまとめ
- 外部システムの入力および出力仕様を正しく習得する
- ブラウザの場合、
仕様通りの入力/ 出力仕様を期待しない (保守的に対処する) - エスケープが必要な場合、
デフォルトで 「すべて」 エスケープする - エスケープできないデータはデータのソースから出力形式まで完全に安全であることを確認する
- 正しい文字エンコーディングであることも必ず確認する
- 不正なデータを見つけた場合、
基本的にエラーとして処理し、 不正なデータを除去 (削除/ サニタイズ) して処理を継続しない