söndag 13 september 2009

Kontroll av indata med htmlencode

Ett problem med inmatning på nätet är användarens möjlighet att skriva in kommandon i fälten för att så sidans kod visas, t.ex. <h1>, <form> eller <script>. Det gör att användarens kod infogas i programkoden vilket gör att sidan inte fungerar eller att användaren kan göra ett dataintrång.

För att skydda mot detta uppfattar DotNet HTLMkod och Script som ett fel och aktiverar skyddet HttpRequestValidationException vilket innebär att användaren får se ett långt tekniskt meddelande rubriken ”Serverfel i tillämpningsprogrammet”. Och det är ju bra, men det är ju än bättre att förklara för användaren på vanligt språk vad som hänt och vad vederbörande nu bör göra.

Lösningen är att först koppla bort det skyddet HttpRequestValidationException. Det gör man genom att lägga till "validateRequest=false" i Page-direktivet. Sedan låter man server.htmlencode bearbeta indata före annan bearbetning i koden, t.ex.
message.text = server.htmlencode(textbox.text)

Inga kommentarer:

Skicka en kommentar