AntiXss.UrlEncode против использования AntiXss.HtmlAttributeEncode в ссылке (ссылка) - PullRequest
2 голосов
/ 26 августа 2010

Согласно старой статье AntiXss о MSDN AntiXss.UrlEncode используется для кодирования ссылки href (ненадежный ввод в следующем примере):

<a href="http://search.msn.com/results.aspx?q=[Untrusted-input]">Click Here!</a>

Насколько я понимаю, UrlEncode следует использовать только при установке чего-либо в URL, как при установке document.location с JS. Так почему бы мне не использовать HtmlAttributeEncode в предыдущем примере для кодирования [Untrusted-input]? С другой стороны, есть ли недостаток безопасности, если я использую UrlEncode для кодирования атрибутов HTML, как в приведенном выше примере?

1 Ответ

2 голосов
/ 27 августа 2010

Url Encode кодирует URL параметры для использования в тегах привязки.

Html Attribute encode кодирует вещи для использования в общих атрибутах HTML.

Оба типа кодирования различаются - небезопасносимволы в кодировке атрибутов HTML будут преобразованы в & xxx;форма, в кодировке URL они превратятся в% xxx.Хотя это, вероятно, вряд ли приведет к ошибкам, это вызовет проблемы с безопасностью, но ваши данные не будут правильно отображаться в браузере или не пониматься в запросе.

(Действительно, кодировка Url, вероятно, изменится из-за несовместимости сстарые браузеры и HTML-кодировка изменятся при следующем удалении CTP, чтобы обеспечить безопасный список определенных диапазонов Юникода).

...