web-dev-qa-db-ja.com

エスケープ、フィルタリング、検証、サニタイズの違いは何ですか?

アプリケーションは、信頼できないデータの入出力を慎重に処理する必要があります。場合によっては、値はエスケープフィルター済み検証済みまたはサニタイズである必要があります。これらの用語はすべて同等ではないことは明らかですが、これらの用語のずさんで交換可能な使用がしばしばあるようです。

セキュリティコンテキストにおける違いと正しい使用法についての明確な概要を探しています。

10
Arminius

エスケープ。制御文字をそのエスケープシーケンスに変換します。たとえば、<記号を&lt;に変換すると、<に続く文字がXMLコンテンツではなくXMLタグとして解釈されなくなります。

フィルタリング。エスケープのようですが、制御文字を置き換えるのではなく、単に削除されます。

検証済みホワイトリストまたは正規表現に対する入力の比較により、不正な動作を引き起こす制御文字またはその他の文字シーケンスを検出します。たとえば、ユーザーが入力したアカウント番号は、ユーザーに関連付けられていることがわかっているアカウント番号のリストに対して検証される場合があります。

Sanitized。システム関数への入力が予期しない無許可の動作を引き起こさないことを保証するエスケープ、フィルタリング、および検証の組み合わせ。

15
John Wu