Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In dit document wordt de aanvraagvalidatiefunctie van ASP.NET beschreven, waarbij standaard wordt voorkomen dat de toepassing niet-gecodeerde HTML-inhoud verwerkt die naar de server wordt verzonden. Deze aanvraagvalidatiefunctie kan worden uitgeschakeld wanneer de toepassing is ontworpen om HTML-gegevens veilig te verwerken.
Is van toepassing op ASP.NET 1.1 en ASP.NET 2.0.
Aanvraagvalidatie, een functie van ASP.NET sinds versie 1.1, voorkomt dat de server inhoud accepteert die niet-gecodeerde HTML bevat. Deze functie is ontworpen om bepaalde aanvallen met scriptinjectie te voorkomen, waarbij code van clientscripts of HTML onbewust kan worden verzonden naar een server, opgeslagen en vervolgens aan andere gebruikers kan worden gepresenteerd. We raden u nog steeds ten zeerste aan om alle invoergegevens en HTML-codering zo nodig te valideren.
U maakt bijvoorbeeld een webpagina die het e-mailadres van een gebruiker aanvraagt en dat e-mailadres vervolgens opslaat in een database. Als de gebruiker <SCRIPT>alert("hello from script")</SCRIPT> invoert in plaats van een geldig e-mailadres, kan dit script worden uitgevoerd als de inhoud niet juist is gecodeerd. De functie voor aanvraagvalidatie van ASP.NET voorkomt dat dit gebeurt.
Waarom deze functie nuttig is
Veel sites zijn niet op de hoogte dat ze openstaan voor eenvoudige scriptinjectieaanvallen. Of het doel van deze aanvallen is om de site te ontkennen door HTML weer te geven of om mogelijk clientscripts uit te voeren om de gebruiker om te leiden naar de site van een hacker, scriptinjectieaanvallen zijn een probleem waarmee webontwikkelaars te maken moeten hebben.
Aanvallen met scriptinjectie zijn een probleem van alle webontwikkelaars, ongeacht of ze gebruikmaken van ASP.NET, ASP of andere technologieƫn voor webontwikkeling.
De ASP.NET aanvraagvalidatiefunctie voorkomt proactief deze aanvallen doordat niet-gecodeerde HTML-inhoud niet door de server kan worden verwerkt, tenzij de ontwikkelaar besluit die inhoud toe te staan.
Wat u kunt verwachten: foutpagina
In de onderstaande schermafbeelding ziet u een voorbeeld van ASP.NET code:
Als u deze code uitvoert, wordt een eenvoudige pagina weergegeven waarmee u tekst in het tekstvak kunt invoeren, op de knop kunt klikken en de tekst in het label besturingselement kunt weergeven:
Echter, als JavaScript, zoals <script>alert("hello!")</script>, zou worden ingevoerd en ingediend, zou er een uitzondering optreden.
Het foutbericht geeft aan dat er een 'potentieel gevaarlijke Request.Form-waarde is gedetecteerd' en dat er meer informatie wordt weergegeven in de beschrijving over wat er is opgetreden en hoe het gedrag kan worden gewijzigd. Voorbeeld:
Aanvraagvalidatie heeft een mogelijk gevaarlijke clientinvoerwaarde gedetecteerd en de verwerking van de aanvraag is afgebroken. Deze waarde kan duiden op een poging om de beveiliging van uw toepassing te beschadigen, zoals een aanval op meerdere sites voor scripts. U kunt aanvraagvalidatie uitschakelen door in de paginarichtlijn of in de configuratiesectie validateRequest=false in te stellen. Het wordt echter sterk aangeraden dat uw toepassing alle invoer in dit geval expliciet controleert.
Aanvraagvalidatie uitschakelen op een pagina
Als u aanvraagvalidatie op een pagina wilt uitschakelen, moet u het validateRequest kenmerk van de pagina-instructie falseinstellen op:
<%@ Page validateRequest="false" %>
Waarschuwing
Wanneer aanvraagvalidatie is uitgeschakeld, kan inhoud worden verzonden naar een pagina; het is de verantwoordelijkheid van de paginaontwikkelaar om ervoor te zorgen dat inhoud correct is gecodeerd of verwerkt.
Aanvraagvalidatie uitschakelen voor uw toepassing
Als u aanvraagvalidatie voor uw toepassing wilt uitschakelen, moet u een Web.config-bestand voor uw toepassing wijzigen of maken en het kenmerk validateRequest van de <pages /> sectie instellen op false:
<configuration>
<system.web>
<pages validateRequest="false" />
</system.web>
</configuration>
Als u aanvraagvalidatie wilt uitschakelen voor alle toepassingen op uw server, kunt u deze wijziging aanbrengen in uw Machine.config-bestand.
Waarschuwing
Wanneer aanvraagvalidatie is uitgeschakeld, kan inhoud worden verzonden naar uw toepassing; het is de verantwoordelijkheid van de ontwikkelaar van de toepassing om ervoor te zorgen dat inhoud correct is gecodeerd of verwerkt.
De onderstaande code wordt gewijzigd om aanvraagvalidatie uit te schakelen:
Als het volgende JavaScript nu is ingevoerd in het tekstvak <script>alert("hello!")</script> , zou het resultaat zijn:
Om te voorkomen dat dit gebeurt, moeten we de inhoud coderen door de aanvraagvalidatie uit te schakelen.
HTML-coderen van inhoud
Als u aanvraagvalidatie hebt uitgeschakeld, is het raadzaam om inhoud te coderen die wordt opgeslagen voor toekomstig gebruik. HTML-codering vervangt automatisch alle '<' of '>' (samen met verschillende andere symbolen) door de bijbehorende HTML-gecodeerde weergave. Bijvoorbeeld, '
Inhoud kan eenvoudig met HTML-codering op de server worden gecodeerd met behulp van de Server.HtmlEncode(string) API. Inhoud kan ook eenvoudig worden gedecodeerd met HTML, dat wil gezegd, teruggezet naar standaard HTML met behulp van de Server.HtmlDecode(string) methode.
Resulteert in: