Я использую библиотеку Microsoft AntiXss 3.1. У нас есть несколько международных сайтов, которые используют нелатинские скрипты. Мы используем SEO-дружественные URL-адреса, поэтому у нас есть символы, отличные от ASCII, которые попадают в URL-адрес.Как получить библиотеку Microsoft AntiXss для URLEncode к стандарту URI (RFC3986) вместо IRI (RFC3987)?
AntiXss.UrlEncode (по крайней мере в 3.1) рассматривает «международные символы» как безопасные, так что мы в конечном итоге с IRI вместо URI:
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 сделать UrlEncode, который совместим со стандартом Ури.
- Некоторая уверенность в том, что если мы пойдем с выходом из библиотеки AntiXss, совместимым с IRI (что предпочтительнее), мы не ставим перед собой проблемы совместимости со старыми прокси-серверами в Таиланде (или где-либо еще - мы можем протестировать против наша матрица браузера, но не все промежуточное сетевое оборудование, которое может существовать между нами и нашими клиентами).
- HttpUtility.UrlEncode - это то, что мы должны использовать и не менее безопасно, чем AntiXss.UrlEncode.
- Есть еще одно лучшее решение, которое я не рассматривал.
Благодаря