正規表現は何を意味し、ウェブサイトへの潜在的な脆弱性ん
-
19-09-2019 - |
質問
私は、標準的な表現の意味については、Googleで検索し、完全にあまりにも不可解ある文書を上げ。誰もが標準的な表現の攻撃にウェブサイトでいくつかの典型的な脆弱性が何であるかにも標準的な表現を簡単に説明を提供し、することはできますか?
解決
Canonicalisationを使用すると、ファイル名、または文字列として、入力を取り、標準的な表現にそれを回すするプロセスです。
WebアプリケーションのみがCの下にあるファイルへのアクセスを許可する場合は、たとえば:\ウェブサイトを\はmydomain、その後、通常のファイル名を参照する任意の入力は、むしろ相対パスを使用するものよりも物理的、直接的な経路であるとcanonicalisedされます。あなたがCを開くしたい場合:\ウェブサイトでは、\その機能にはmydomain \例\ example.txtに一つの入力は、例えば、\のEXAMPLE.SQLのかもしれません。 \サイト\ MYDOMAIN \例\の、EXAMPLE.SQL:canonicalisation機能は、アプリケーションディレクトリを見て、物理的な1、Cにその相対パスを変更しますので、それは、これはあなたのウェブサイトの境界外になった場合に動作するように難しいです。これは明らかにあなたは、単に文字列がファイルパスの開始に比較しないようチェックする方が簡単です。
HTML入力の場合、あなたは20%のような入力を取り、unencodingによってそれらをcanonicaliseので、これは宇宙に変わるでしょう。これは、エンコーディングの異なる方法の数が多数であるとして、canonicalisationはあなただけデコードされた文字列をチェックするのではなく、すべてのエンコードのバリエーションをカバーしようとすることをお勧めします。
基本的には、論理的に等価とあなたが、その後に作用することができ、標準形式に変換された入力を取っています。
他のヒント
以下の説明は、「アプリケーションセキュリティと開発STIG」からであるここに:
3.11正規表現 Canonicalの表現の問題が発生します リソースの名前がに使用されたとき 制御リソースへのアクセス。がある 表現の複数の方法 コンピュータシステム上のリソース名。 のみに頼るアプリケーション アクセスすることを制御するために、リソース名 間違ってアクセス制御を行います 名前が指定されている場合の決定 認識できないフォーマット。
たとえば、 Windowsでは、メモ帳であってもよいです 次のファイルで表され、 パス名の組み合わせます:
C:\ WINDOWS \ System32に\ notepad.exeを
の%SystemRoot%\ System32 \ notepad.exeを
?\ \ C:\ WINDOWS \ System32に\ notepad.exeを
\ホスト\ C $ \ WINDOWS \ SYSTEM32 \ notepad.exeを
を制限しようとするアプリケーション のみに基づいてファイルへのアクセス ファイルのパスと名前は不適切かもしれません アクセスを許可または拒否。同じ問題 上の他の名前付きのリソースに適用される場合があります そのようなハード、システム、および ソフトリンク、URL、パイプ、共有、 ディレクトリ、デバイス名、またはデータ内 ファイル、もし別のエンコーディング 機構は、データで使用されています。
以下の項目は、潜在的に示すこと における標準的な表現の問題 アプリケーション:
•アクセス制御 意思決定リソース名に基づいています。
にリソース名を減らすために、•失敗 使用前にその正規の形式。
で 標準的な最小化するため、 での表現の問題 アプリケーションは、以下を実装します 手順ます:
•のみに依存しないでください アクセスを制御するリソース名。
•もし 制御するためのリソース名を使用して アクセス、確実にするために名前を検証 彼らは適切な形式です。拒絶します すべての名前は知られている、良いフィットではありません 基準。
•使用するオペレーティングシステムベース ようなアクセス制御機構 アクセス権とACLます。
Canonicalisationは、その最も単純な形式に受信したデータを減少させることを意味する、それは入力検証のために使われています。
Canonicalが(と思う)コンソール入力は、「典型的な行動」であることを意味します。非標準の入力は非標準であり、そのような「viの」Linuxでの入力動作として、特別な知識を必要とすることを意味する。