Полный список триггеров XSS для ValidateRequest в ASP.NET - PullRequest
2 голосов
/ 22 мая 2011

Я понимаю, почему возникает исключение «Потенциально опасное значение Request.Form…» и почему это полезно. Я хотел бы разместить на моей странице валидаторы на стороне клиента, которые проверяют, содержит ли ввод <> ON = или что-то еще может вызвать это исключение. Проблема в том, что я не знаю всех символов или строк, которые вызывают исключение. Есть ли где-нибудь список триггеров? Я не могу найти его, только вопросы / ответы, относящиеся к само исключение и как с ним справиться.

Кроме того, должен ли запрос поступать из внешнего источника, а не из моей формы, как я могу узнать и как я могу его обработать? Asp.NET делает это автоматически? Будет ли работать скрытое поле или хакеры смогут обойти это?

Мы ценим информацию, которую вы можете предоставить (включая ссылки).

UPDATE:

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

(^((?=.*&#).*)$)|(^((?=.*<).*)$)|(^((?=.*>).*)$)

Однако, когда вы отправляете форму, даже поля, которые находятся в отдельной группе проверки, отличной от нажатой кнопки, передаются на сервер, и если в этих полях есть недопустимый текст, вы получите исключение. Итак, я решил использовать Ajax FilteredTextBoxExtender для блокировки этих символов из TextBoxes. Другой альтернативой может быть использование функции keyup JavaScript во всех текстовых окнах. Тем не менее, умный пользователь может отключить JavaScript обоих из них, и они не являются полностью надежными.

1 Ответ

2 голосов
/ 22 мая 2011

Похоже, это дубликат аналогичного вопроса на этом сайте. На этот вопрос есть несколько ответов, где люди размышляли с помощью кода, чтобы получить фактические триггеры.

В ответ на ваш другой вопрос, если неверный ввод поступит из запроса, исходящего из того места, которое вы явно не проверили, например, из другого сайта, он выполнит запрос ValidateRequest на стороне сервера вашего кода, и вызывающая сторона увидит Ошибка 500 или пользовательская страница ошибки, если она включена. Это предполагает, что вы разрешаете запросы от других серверов (читайте о CSRF ). Если вы не хотите разрешать запросы с других серверов, вы можете проверить реферер запроса и разрешить запросы только с вашего собственного сайта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...