1

ユーザーエージェント/ブラウザなどによって処理されない、ユーザー入力のユニコードに実際の危険性はありますか?

明らかに、サーバーからクライアントへのスプーフィングの脅威がありますが、Unicode 入力を処理する際に注意すべき具体的な「攻撃」(ある場合) または不満を理解しようとしています。

質問は言語に依存しませんが、GWT アプリケーションのセキュリティへの影響を念頭に置いてこの質問をしています。

4

2 に答える 2

5

ユーザー入力の最大の危険は、「特殊文字」を含むコンテキストでその入力を使用することです。つまり、単純に SQL クエリに連結したり、HTML に出力したりします。アプリケーションの動作の一部が文字列 (SQL クエリや HTML ページなど) によって制御され、ユーザーがこれらの文字列を制御して独自のコマンドを挿入できる場合、それは危険です。

ただし、この点に関しては、Unicode が他のエンコーディングよりも特別なことは何もありません。環境内の特殊文字は明確に定義されています。ユーザー入力をエスケープ、フィルター処理、またはサニタイズするだけで、これらの特殊文字が特別なものではなくなります。これは、他のエンコーディングでも行う必要があるのと同じです。エスケープ/フィルタリング/サニタイズ機能が正しいエンコーディングを認識して、適切に機能するように注意する必要があります。

それとは別に、Unicode でエンコードされたテキストは単なるテキストです。含まれている特殊文字を中和し、エンコーディングを適切に処理する場合、テキストだけに危険はありません。ユーザーが sbuıɥʇ pɹıǝʍ buıʇıɹʍ を使用したり、似たようなキャラクターを特定の目的で悪用したりすることは別として、それはもはや一般化された危険についてではありません。

于 2012-04-26T11:20:35.120 に答える
4

ユーザー制御のUnicode文字列に関するいくつかの問題を考えることができます。

  1. Unicodeで同等の文字列を表現する方法は複数あります。たとえばä、単一のコードポイントとして表現したり、aその後に組み合わせて表現したりできます¨。Unicode正規化は、これらの問題のほとんどに役立ちます。
  2. 奇妙なカレットの動きを可能にするキャラクターがいます。他の人のメッセージの上に自分のメッセージを置くことができるチャットについて聞いたことがあります。管理者は誰が実際にそのメッセージを送信したのかわからなかったため、不適切なことを言うことを禁止されました。
  3. そっくりさんのキャラクターがいます。たとえば、ASCII文字と光学的に区別できないロシア文字またはギリシャ文字がいくつかあります。これは、文字列が何かを一意に識別する必要があるという非常に問題があります。たとえば、ユーザー名やドメイン。はるかに悪いことを除いて、古典的なl対問題に似ています。I
  4. UTF-8およびUTF-16では、コードポイントの途中で文字列を分割すると、いくつかの問題が発生する可能性があります。
  5. 文字列に対する一部の操作では、文字列の長さが予期せず変更される場合があります。たとえば、文字列を大文字にすると、文字列が長くなる場合があります。

おそらくもっと多くの問題があります、私は確かにユニコードの専門家ではありません

于 2012-04-26T11:16:43.390 に答える