2009-07-22 12 views

答えて

8

正規化とは、ファイル名や文字列などの入力を受け取り、標準表現に変換するプロセスです。

たとえば、WebアプリケーションでC:\ websites \ mydomain下のファイルにしかアクセスできない場合、通常、ファイル名を参照する入力は、相対パスを使用するのではなく物理的な直接パスになります。 C:\ websites \ mydomain \ example \ example.txtを開きたい場合、その関数への入力はexample \ example.txtです。これがあなたのWebサイトの境界を越える場合はうまくいかないので、標準化機能はアプリケーションディレクトリを見て、その相対パスを物理パスC:\ websites \ mydomain \ example \ example.txtに変更します。これは明らかにファイルパスの先頭で文字列を比較するだけで簡単に確認できます。

HTML入力の場合、%20のような入力を取り、それらをunencodingで標準化するので、これはスペースに変わります。これは、さまざまなエンコーディング方法の数が多いほどよい考えです。標準化とは、すべてのエンコーディングバリエーションをカバーするのではなく、デコードされた文字列のみをチェックするという意味です。

基本的には、論理的に等価な入力を受け取り、標準形式に変換してから操作することができます。

+0

入力フィールドに潜在的にSQLインジェクション攻撃や通常の文字列サニタイズをバイパスするXSSを試してみることができますか? – predhme

+1

衛生上の違いがあります。一般に、SQLインジェクション攻撃はエンコーディングを使用しないため、正規化の問題ではありません。 XSSは、あなたが何をするかによって異なります。あなたがそれを出力する前にすべての入力をエンコードしているなら、それはそうではありません。しかし、あなたはホワイトリストにしようと、または文字列のより悪いブラックリスト特定の部分しているならば、あなたはので、最初の文字列をcanonicaliseなり、例えば、

-4

Canonical(私は思う)は、コンソール入力が「典型的な動作」であることを意味します。非正規(non-canonical)とは、入力が非標準であり、Linux上での "vi"の入力動作などの特別な知識を必要とすることを意味します。

+0

しかし、それはどのようにウェブサイトに適用され、脆弱性がありますか? – predhme

+0

標準の定義についてのblowdartの答えを参照してください –

+0

私の答えは、Blowdartsの回答とは全く違っていませんが、私はそれを1つの文で説明することができます。プログラマーにとって、効率性が重要です。 – djangofan

3

以下の説明は、「アプリケーションセキュリティと開発STIG」からであるhereが見つかりました:

3.11リソースの名前が 制御リソースへのアクセスに使用されている場合 正規表現の問題が を発生する正規表現。コンピュータシステム上に リソース名を表す複数の方法があります( )。 リソース名にのみアクセスを制御するアプリケーションがある場合、 に名前が指定されていると、アクセス制御を正しく行わない可能性があります( )。例えば

、Windowsで 、メモ帳は は、次のファイルと パス名の組合せによって表すことができる。

C:\ WINDOWS \ System32に\のメモ帳

% SYSTEMROOT%\ SYSTEM32 \ notepad.exeを

\ \ C:?\ WINDOWS \ SYSTEM32 \ notepad.exeを

ホスト\ \ $ \ WindowsのC \ SYSTEM32 \ notepad.exeを

ファイルパスとファイル名にのみ基づいてファイルへのアクセスを制限しようとするアプリケーションが、 アクセスを許可または拒否することがあります。代替エンコーディング メカニズムがある場合、同じ問題 は、ハードとソフト リンク、URL、パイプ、共有、 ディレクトリ、デバイス名、またはデータ内 ファイルとして システム上の他の名前付きリソースに適用される場合がありますデータとともに使用されます。

•アクセス制御リソース名に基づいて 決定:

以下の項目が アプリケーションの潜在的な 標準的な表現に問題がある可能性があります。

•使用前にリソース名を に正規化することができません。アクセスを制御するためだけに リソース名に依存しないでください•

: ため、次の 手順を実装し、 アプリケーションで標準的な 表現の問題を最小限に抑えるために

。彼らは適切な形式である を確保するために名前を検証し、 アクセスを制御するために、リソース名を使用して

• 場合は、 のすべての名前が既知の良好なものに合致しないことを拒否する 基準。

? アクセス許可やACLなどのオペレーティングシステムベースの アクセス制御メカニズムを使用します。

0

正規化とは、受信したデータを最も簡単な形式に縮小することを意味し、入力の検証に使用されます。

関連する問題