Что мне нужно сделать, чтобы защитить свой сайт, если я решу установить ValidateRequest = false? - PullRequest
1 голос
/ 25 мая 2011

Я только что обнаружил, что поскольку ValidateRequest = true по умолчанию, то по умолчанию нельзя вводить «<» или «>» в ​​любое поле ввода.

Мне не слишком много известно о XSS-атаках, что кажется довольно ограничительным.

Чтобы обойти это, я понял, что могу использовать validateRequest = false и кодировать данные пользователя. Очевидно, у Microsoft есть веская причина для того, чтобы поставить validateRequest = true, поэтому проблема в том, что у меня есть целый сайт с большим количеством страниц, все с этой проблемой «не могу поставить <или>».

У меня вопрос: есть ли у меня только два варианта?

1) Оставьте validateRequest = true и не позволяйте пользователю вводить <или> вообще 2) переключите validateRequest = false и примите превентивные меры.

Если для 2, я должен кодировать весь ввод данных? Как из текстовых полей от логинов и паролей к пользовательскому тексту для критериев поиска? Или мне нужно сделать это только для некоторых входных данных? Если да, то на какие поля я должен ориентироваться?

Ответы [ 2 ]

1 голос
/ 25 мая 2011

Я столкнулся с этой же проблемой и нашел ответ по переполнению стека здесь:
Потенциально опасное значение Request.Form обнаружено клиентом

Прочитайте комментарий высокого ранга в помеченном ответе.
Это то, что я использую в своем Web.Config, потому что я использую .net 4.0 framework:

<httpRuntime requestValidationMode="2.0" />

Затем я добавляю ValidateRequest = "false" постранично:

<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPages/Site.Master"
    AutoEventWireup="true" CodeBehind="ScheduleAppointment.aspx.cs"
    Inherits="DentalPower.Pages.Public.ScheduleAppointment"
    ValidateRequest="false" %>

Было бы неплохо, если бы в Asp.net TexBoxes была функция, позволяющая установить для свойства ForceEncode значение true, которое будет автоматически кодировать ввод перед отправкой. Может быть, они сделают это ... когда-нибудь.

Да, и всегда кодируйте все свои входные данные из веб-элементов управления на странице, на которой отключена проверка.

0 голосов
/ 25 мая 2011

Насколько я знаю, вы правы.Оставьте валидацию включенной или сделайте это вручную.Проблема в том, что проверка по умолчанию является чрезвычайно строгой и непрактичной во многих ситуациях (так много веб-приложений, которые я видел, просто отключают его на всем сайте без особого обдумывания последствий)Ваша ссылка, отличная статья о экранировании кода: http://wonko.com/post/html-escaping

...