Felsök: Request.Form-värdet som identifierats från klienten ... kan vara skadligt

Detta är ett fel som man kan få om man skriver in html-kod i en textruta och postar det med Asp.Net. Det behöver inte ens vara html. .NET-Ramverket känner av ifall man har skrivit större-än eller mindre-än tecknet ("<...>").

Hela felmeddelandet:

Beskrivning: Vid verifiering av begäran identifierades ett indatavärde från klienten som kan vara skadligt. Behandlingen av begäran har avslutats. Det här värdet kan indikera ett försök att kompromettera säkerheten för tillämpningsprogrammet, till exempel en skriptattack över webbplatsen. Du kan inaktivera verifiering av begäran genom att ange validateRequest=false i Page-direktivet eller -konfigurationsavsnittet. Du bör emellertid låta tillämpningsprogrammet kontrollera alla indata i det här fallet.

Undantagsinformation: System.Web.HttpRequestValidationException: Request.Form-värdet som identifierats från klienten (ctl00$mainContentPH$fvFaq$tbFaqBody_sv-SE="...the link &lt;a href="http://www....") kan vara skadligt.

Botemedel
För att stänga av valideringen kan man göra på två sätt.

1. Stänga av i konfigurationen

<system.web>
<pages ValidateRequest="false"/>
</system.web>

2. Stänga av på en enskild sida

<%@ Page ValidateRequest="false" ... %>

En varning för injektion
Valideringen finns där av ett skäl, tänk på att om den stängs av så kan besökarna t ex posta javascript som ser ut så här. Och det är inte ofta man vill...

<script>alert('I am posting some dangerous code')</script>

Mer info finns på Brian Cryer's hemsida.

Comments

asdf
Tack så mycket!
This is a really poor idea unless the page is behind a login, as it means you are opening up the page to spambots, etc. UNLESS YOU ARE SURE, DO NOT TAKE THIS ADVICE.
Hi Will, Thank you for your extra warning. Yes you are right, this should be used with caution. In an intranet situation with login protected pages it can be useful to disable validation of the request. Do somebody have a good solution how to do it if you want to accept html-input from users in an open enviroment, i e blog-comments and simular. How can this be done without turning off validation?