MicrosoftAntiXss3.1ライブラリを使用しています。非ラテン文字を使用する国際的なサイトがいくつかあります。SEOに適したURLを使用しているため、URLに非ASCII文字が含まれています。
AntiXss.UrlEncode(少なくとも3.1では)は「国際文字」を安全なものとして扱うため、URIではなくIRIになります。
http://somesite.com/ja-JP/applications/search/セキュリティ-b200009
HttpUtility.UrlEncodeは、URI(RFC3986)の正しいエンコーディングを生成します。
http://somesite.com/ja-JP/applications/search/%e3%82%bb%e3%82%ad%e3%83%a5%e3%83%aa%e3%83%86%e3%82%a3-b200009
しかし、私はむしろAntiXssライブラリを使用するという私たちの標準に従いたいと思います。
AntiXss / WPL 4.0がリリースされたことは知っていますが(デフォルトでは国際文字を安全として扱わなくなったようです)、API名が変更されたため、アップグレードするにはアプリケーションに大幅な変更を加える必要があります。
だから、私は次のいずれかの答えに満足しているでしょう:
- AntiXssを誘導して、Uri標準と互換性のあるUrlEncodeを実行する方法。
- AntiXssライブラリのIRI準拠の出力(望ましい)を使用する場合、タイ(または他の場所)の古いプロキシサーバーとの互換性の問題に備えていないという安心感があります。ブラウザマトリックスに対してテストできます。 、ただし、私たちとお客様の間に存在する可能性のあるすべての中間ネットワーク機器ではありません)。
- HttpUtility.UrlEncodeは私たちが使用すべきものであり、AntiXss.UrlEncodeよりも著しく安全性が低くありません。
- 私が考えていない他のより良い解決策があります。
ありがとう