La richiesta potenzialmente pericolosa carica la pagina

0

Ho ospitato un'applicazione in webform ASP.NET 4.0.

Quando sfoglio hostname/DressDetail.aspx?<script>alert(313)</script>&category=1&code=76 mostra un messaggio di errore del tipo:

A potentially dangerous Request.QueryString value was detected from the client (="alert(313)

Mi aspetto lo stesso messaggio di errore di cui sopra quando sto navigando su hostname/DressDetail.aspx?<script>alert(313)</script>=1&category=1&code=76 , ma carica la pagina. L'unica differenza è un extra =1 nel secondo URL.

    
posta Hrishikesh T T 11.04.2018 - 07:52
fonte

1 risposta

0

Analizziamo cosa sta succedendo qui guardando il codice WebForms di ASP.NET.

Primo esempio, w / o =1

[HttpRequestValidationException (0x80004005): A potentially dangerous Request.QueryString value was detected from the client (="alert(1)c__DisplayClass280_0.b__0(String key, String value) +22 System.Web.HttpValueCollection.EnsureKeyValidated(String key) +9904693 System.Web.HttpValueCollection.GetValues(String name) +17 System.Web.UI.Page.DeterminePostBackMode() +99

Se eseguiamo il codice, possiamo vedere che l'eccezione ha origine in EnsureKeyValidated , ma possiamo arrivarci da GetValues , da DeterminePostBackMode . Quindi se controlli qui vediamo questo:

      string[] values = nameValueCollection.GetValues((string) null);

quindi sembra che quello che otteniamo qui stia recuperando tutti i valori privi di chiave. Quindi la query precedente potrebbe essere riscritta nel formato null=<script>alert(313)</script>& . Quindi lo script viene passato al valore per una chiave null / vuota .

Secondo esempio, w / =1

Qui fai che il tasto sia uguale allo script e il valore per quella chiave sia 1. Le chiavi sono codificate prima di essere passate al server quindi questo non sarebbe un problema.

Sevuoireplicarel'errore,potrestipassarea=<script>alert(313)</script>eotterrestilostessoerroreappenaprovenientedaunluogodiverso:

[HttpRequestValidationException(0x80004005):ApotentiallydangerousRequest.QueryStringvaluewasdetectedfromtheclient(a="alert(1)c__DisplayClass280_0.b__0(String key, String value) +22 System.Web.HttpValueCollection.EnsureKeyValidated(String key) +9904693 System.Web.HttpValueCollection.GetValues(Int32 index) +29 System.Web.HttpValueCollection.ToString(Boolean urlencoded, IDictionary excludeKeys) +206 System.Web.UI.Page.get_ClientQueryString() +411

Se è necessario, è possibile controllare ciò che è negato .

    
risposta data 11.04.2018 - 11:54
fonte

Leggi altre domande sui tag