Che cosa è specificamente "potenzialmente pericoloso" su una e commerciale in un URL

4

ASP.NET include un sistema di convalida delle richieste che interrompe l'elaborazione della pagina se uno dei seguenti caratteri è presente nella porzione di percorso dell'URL < > * % & : \ ? . Invece della normale pagina, il runtime restituisce una pagina di errore che dice

A potentially dangerous Request.Path value was detected from the client

Le uniche informazioni che sono riuscito a trovare sul fatto che siano "potenzialmente pericolose" sono vaghi riferimenti all'XSS. Qual è il problema specifico che il runtime sta tentando di mitigare? Se devo accettare gli URL nella mia app che non riesco a controllare e che potrebbero contenere alcuni dei caratteri non sicuri, è possibile disabilitare la convalida del runtime?

(Esistono già numerosi articoli che trattano come per disabilitare la convalida, ma nessuno di essi menziona le implicazioni di ciò)

    
posta just.another.programmer 02.02.2017 - 12:47
fonte

1 risposta

2

È difficile rispondere alla tua domanda sull'opportunità o meno di disabilitare la convalida senza conoscere le circostanze esatte, ma farei attenzione a disabilitarla se non esegui personalmente una validazione approfondita del componente del percorso.

Il punto interrogativo e la e commerciale potrebbero essere pericolosi perché sono usati per passare i parametri a un'applicazione su un URL. La e commerciale è anche un problema perché le entità html possono essere codificate con esso ( &auml; produce 'ä'). Questo non è un problema in un URL, ma se ottieni la codifica / decodifica leggermente errata e inserisci una variabile get che li contiene nel tuo html di pagina, potresti consentire a un utente malintenzionato di includere pericolosi tag html come il tag script, iframe ecc. Il carattere percentuale è un problema perché è usato per codificare caratteri speciali negli URL. E naturalmente il < e > sono un problema perché questi sono usati per i tag HTML.

Se la tua applicazione fornisce un modo per accettare il percorso della richiesta (o il contenuto del corpo) con questi personaggi da chiunque, qualcuno potrebbe pensare a un modo per utilizzarli per indurre la tua applicazione a fare qualcosa di non voluto.

Ad esempio, se non hai convalidato il percorso della richiesta e la tua applicazione ha inserito il valore della variabile "titolo" nella tua pagina se era presente, questo sarebbe innocuo quando qualcuno ha richiesto un url come http://www.example.com/profile?user=johndoe&title=John , ma qualcun altro potrebbe utilizzare http://www.example.com/profile?user=johndoe&title=<script>really bad script here<script> (probabilmente codificando il valore del titolo usando la codifica in percentuale url) e fare in modo che il suo script venga eseguito nel contesto della pagina.

Sarebbe anche peggio se tu memorizzassi il valore della variabile title in un database e in seguito lo mostrassi a tutti gli utenti che volevano vedere il profilo di john doe, perché questo avrebbe eseguito lo script ogni volta chiunque ha guardato il profilo di John Doe. Lo script potrebbe quindi rubare i cookie di questi utenti o fare qualcosa di veramente orribile e malvagio a loro. :-) L'esempio è un po 'inverosimile, ma il problema di base non lo è.

    
risposta data 04.02.2017 - 11:30
fonte

Leggi altre domande sui tag