ASP.net で URL 書き換えを実装していますが、URL が原因でさまざまな問題が発生しています。
URL は、部門とカテゴリのデータベースから生成されます。従業員が、サイトを壊すことなく、適切な特殊文字を使用してアイテムをデータベースに追加できるようにしたいと考えています。
URL を作成する前にデータをエンコードしています。
いくつかの問題があります...
- IIS は、.net に到達する前に URL をデコードするため、「/」が含まれているものを適切に解析できません。
- ASP.net は、特定のページ内で "~" を役に立たなくする URL によって混乱します。
- ビルトイン テスト サーバーからローカル IIS サーバー (XP マシン) に移行しましたが、エンコードされた & (%26) を含む URL で「Bad Request」エラーが発生します。
- UrlEncode では、「.」などの一部の区切り文字がそのまま残ります。
この件に関して他に 2 つの関連する投稿がありましたが、その時点ではアップストリームの大きな問題ではなく、小さな問題しか見ていませんでした。「Bad Request」の問題を解決するためのいくつかのレジストリのトリックを見つけましたが、共有ホスティング環境にデプロイすることでそれが役に立たなくなります。また、これが何らかのセキュリティ問題の修正であることも知っているので、開いているワームの種類を知らずに、必ずしも回避したくありません。
.net に生の URL を強制的に渡させたり、IIS の設定を上書きさせたりするのではなく、そもそも本当に安全な URL を作成したいと考えています。
私はAntiXss.URLEncode、HttpUtility.URLEncode、URI.EscapeDataStringを試したことに注意してください。double URLEncodng のような愚かなことも試しました。私が必要とすることを行うユーティリティはありますか、それとも本当に自分でロールバックする必要がありますか? % を通常とは異なる文字列に置き換えるようなハッキーなことをすることさえ考えています。最終結果は、少なくとも読み取り可能である必要があります。これが、最初に URL 書き換えを使用するポイントでした。
長い投稿で申し訳ありません。必要な詳細がすべて含まれていることを確認したかっただけです。これに関する関連情報が見つからないようです。これはよくある問題のようです。そのため、何か大きなものを見逃している可能性があります。ご協力ありがとうございます。長い説明をお待ちください。
わかりやすくするために編集します。
URL がデータベースから構築されていると言うとき、私が言いたいのは、ディレクトリ構造がデータベース内の部門とカテゴリから構築されているということです。
URL の例 -
Mystore/Refrigeration/Bar+Fridge.aspx
Mystore/Cooking+Equipment.aspx
Mystore/Kitchen/Cutting+Boards.aspx
「Beverage & Bar」や「Pastry/Decorating」などの部門を使用して URL を作成すると、問題が発生します。最初にエンコードされているにもかかわらず、これらは前述の問題を引き起こします。
私のハンドラーは既に実装されており、特殊文字エンコーディングの問題を除いて正常に動作しています。