Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
I det här dokumentet beskrivs funktionen för validering av begäran i ASP.NET där programmet som standard hindras från att bearbeta okodat HTML-innehåll som skickas till servern. Den här funktionen för validering av begäran kan inaktiveras när programmet har utformats för att på ett säkert sätt bearbeta HTML-data.
Gäller för ASP.NET 1.1 och ASP.NET 2.0.
Validering av begäranden, en funktion i ASP.NET sedan version 1.1, hindrar servern från att acceptera innehåll som innehåller okodad HTML. Den här funktionen är utformad för att förhindra vissa skriptinmatningsattacker där klientskriptkod eller HTML omedvetet kan skickas till en server, lagras och sedan presenteras för andra användare. Vi rekommenderar fortfarande starkt att du verifierar alla indata och HTML-kodar dem när det är lämpligt.
Du kan till exempel skapa en webbsida som begär en användares e-postadress och sedan lagrar e-postadressen i en databas. Om användaren anger <SCRIPT-avisering>("hello from script")</SCRIPT> i stället för en giltig e-postadress kan skriptet köras om innehållet inte kodades korrekt när dessa data visas. Funktionen för validering av begäran i ASP.NET förhindrar att detta händer.
Varför den här funktionen är användbar
Många webbplatser är inte medvetna om att de är öppna för enkla skriptinmatningsattacker. Oavsett om syftet med dessa attacker är att förstöra webbplatsen genom att visa HTML, eller att eventuellt köra klientskript för att omdirigera användaren till en hackares webbplats, är skriptinmatningsattacker ett problem som webbutvecklare måste brottas med.
Skriptinmatningsattacker är ett problem för alla webbutvecklare, oavsett om de använder ASP.NET, ASP eller andra webbutvecklingstekniker.
Funktionen för validering av ASP.NET begäran förhindrar proaktivt dessa attacker genom att inte tillåta att okodat HTML-innehåll bearbetas av servern om inte utvecklaren beslutar att tillåta innehållet.
Vad du kan förvänta dig: Felsida
Skärmbilden nedan visar några exempel på ASP.NET kod:
Om du kör den här koden visas en enkel sida där du kan ange text i textrutan, klicka på knappen och visa texten i etikettkontrollen:
Om JavaScript, såsom <script>alert("hello!")</script> skulle anges och skickas, skulle vi få ett undantag dock.
Felmeddelandet anger att ett "potentiellt farligt Request.Form-värde identifierades" och innehåller mer information i beskrivningen om exakt vad som hände och hur du ändrar beteendet. Som exempel:
Verifiering av begäran har identifierat ett potentiellt farligt klientindatavärde och bearbetningen av begäran har avbrutits. Det här värdet kan tyda på ett försök att äventyra säkerheten för ditt program, till exempel ett skriptangrepp mellan webbplatser. Du kan inaktivera validering av begäranden genom att ange validateRequest=false i siddirektivet eller i konfigurationsavsnittet. Det rekommenderas dock starkt att programmet uttryckligen kontrollerar alla indata i det här fallet.
Inaktivera validering av begäran på en sida
Om du vill inaktivera validering av begäranden på en sida måste du ange validateRequest attributet för siddirektivet till false:
<%@ Page validateRequest="false" %>
Försiktighet
När valideringen av begäran är inaktiverad kan innehåll skickas till en sida. det är sidutvecklarens ansvar att se till att innehållet är korrekt kodat eller bearbetat.
Inaktivera begäransvalidering för din applikation
Om du vill inaktivera validering av begäran för ditt program måste du ändra eller skapa en Web.config fil för ditt program och ange attributet validateRequest i <pages /> avsnittet till false:
<configuration>
<system.web>
<pages validateRequest="false" />
</system.web>
</configuration>
Om du vill inaktivera validering av begäranden för alla program på servern kan du göra den här ändringen i din Machine.config-fil.
Försiktighet
När validering av begäran har inaktiverats kan innehåll skickas till ditt program. det är programutvecklarens ansvar att se till att innehållet är korrekt kodat eller bearbetat.
Koden nedan ändras för att inaktivera validering av begäran:
Om följande JavaScript nu har angetts i textrutan <script>alert("hello!")</script> blir resultatet:
För att förhindra att detta inträffar måste vi html-koda innehållet när valideringen av begäran är inaktiverad.
Så här HTML-kodar du innehåll
Om du har inaktiverat validering av begäranden är det bra att HTML-koda innehåll som kommer att lagras för framtida användning. HTML-kodning ersätter automatiskt alla "<" eller ">" (tillsammans med flera andra symboler) med motsvarande HTML-kodade representation. Till exempel ersätts '
Innehåll kan enkelt HTML-kodas på servern med hjälp av API:et Server.HtmlEncode(string) . Innehållet kan också enkelt HTML-avkodas, dvs. återgå till standard-HTML med hjälp av Server.HtmlDecode(string) metoden.
Resulterar i: