ユーザーエージェント/ブラウザなどによって処理されない、ユーザー入力のユニコードに実際の危険性はありますか?
明らかに、サーバーからクライアントへのスプーフィングの脅威がありますが、Unicode 入力を処理する際に注意すべき具体的な「攻撃」(ある場合) または不満を理解しようとしています。
質問は言語に依存しませんが、GWT アプリケーションのセキュリティへの影響を念頭に置いてこの質問をしています。
ユーザー入力の最大の危険は、「特殊文字」を含むコンテキストでその入力を使用することです。つまり、単純に SQL クエリに連結したり、HTML に出力したりします。アプリケーションの動作の一部が文字列 (SQL クエリや HTML ページなど) によって制御され、ユーザーがこれらの文字列を制御して独自のコマンドを挿入できる場合、それは危険です。
ただし、この点に関しては、Unicode が他のエンコーディングよりも特別なことは何もありません。環境内の特殊文字は明確に定義されています。ユーザー入力をエスケープ、フィルター処理、またはサニタイズするだけで、これらの特殊文字が特別なものではなくなります。これは、他のエンコーディングでも行う必要があるのと同じです。エスケープ/フィルタリング/サニタイズ機能が正しいエンコーディングを認識して、適切に機能するように注意する必要があります。
それとは別に、Unicode でエンコードされたテキストは単なるテキストです。含まれている特殊文字を中和し、エンコーディングを適切に処理する場合、テキストだけに危険はありません。ユーザーが sbuıɥʇ pɹıǝʍ buıʇıɹʍ を使用したり、似たようなキャラクターを特定の目的で悪用したりすることは別として、それはもはや一般化された危険についてではありません。
ユーザー制御のUnicode文字列に関するいくつかの問題を考えることができます。
ä
、単一のコードポイントとして表現したり、a
その後に組み合わせて表現したりできます¨
。Unicode正規化は、これらの問題のほとんどに役立ちます。l
対問題に似ています。I
おそらくもっと多くの問題があります、私は確かにユニコードの専門家ではありません