Для значений Текстового поля HtmlEncode действительно ли необходимо, если ASP.Net Request Validation включен?

stringstream сделает (, как xtofl указал ). формат Повышения является более удобной заменой для snprintf.

12
задан IdahoX 2 October 2009 в 17:34
поделиться

2 ответа

Если для сайта включена проверка запросов ASP.NET, вам все равно нужно HtmlEncode

Проверка запросов ASP.NET - это хитрость, чтобы попытаться обойти сломанные программы глупых авторов. Не пишите сломанные программы.

Любая текстовая строка, которую вы пишете на HTML-странице, должна быть закодирована в HTML; это вопрос правильности, а не только безопасности (которая является подмножеством правильности). Даже если проверка запроса может волшебным образом удалить любую возможную атаку XSS (а это , так что ничего подобного), отказ от вывода текста HtmlEncode все равно оставит вас открытыми для создания искаженного вывода, искажающего ваши данные. Скажем, я делал сообщение на форуме о некоторых переменных a , b и c и хотел сказать:

a<b b>c b>a

Если это было отражено в исходном HTML без кодирования я бы получил:

a c b> a

и, возможно, остальная часть страницы тоже будет полужирной. Упс!

Проверка запроса является подделкой, и на нее нельзя полагаться. То, что она включена по умолчанию и «рекомендуется для всех производственных сред», печально и заставляет меня серьезно сомневаться в здравом уме команды ASP.NET.

Если вы правильно написали свою программу, она вам не нужна, и она просто получит на вашем пути. (Например, если бы SO использовал его, я бы не смог написать этот пост, в котором упоминается тег