Dove è il posto “giusto” per verificare se una querystring è stato manomesso?
-
08-10-2019 - |
Domanda
Voglio aggiungere Querystring "controllo" e la registrazione nel caso di "manomesso" querystrings. È l'evento Page_Init su una determinata pagina il posto giusto per farlo nel ciclo di vita pagina ASP.Net?
Soluzione
La mia regola generale è di fare tutto il più presto possibile. Questo potrebbe includere anche la verifica già nel Application.BeginRequest (che si verifica eventi possono prima che la pagina viene anche caricata), a condizione che la verifica di query stringa non è dipendente dalla pagina.
La domanda qui è "Quali ritiene essere la manomissione?" le chiavi non valide? Valori non validi? I tentativi di tag di codifica che potrebbe auspicabilmente essere scritti alla pagina risultante come parte di un attacco XSS?
E 'difficile dare qualsiasi tipo di consulenza specifica, senza sapere di più su cosa si sta cercando di realizzare.
Modifica : per accedere agli eventi di applicazione, aggiungere un Globale Classe Application per il progetto tramite l'opzione 'Add New Item'
.Ogni richiesta innesca la del ciclo di vita , e la pagina del ciclo di vita è solo un sotto-processo all'interno che quando il gestore della richiesta sembra essere un file aspx.
EDIT2 : la pulizia dei dati stringa di query dipende interamente da ciò che si sta utilizzando i dati per. Alcuni usi potenzialmente pericolosi per i dati di stringa di query includono:
- I valori per un comando SQL :. SQL injection può essere in gran parte ridotto utilizzando 'query parametrizzate'
- Posizione dei file :. Questo potrebbe essere utilizzato per rendere la tosse server di qualsiasi file sul disco rigido se le autorizzazioni NTFS sul server sono lassista ??li>
- valori scritti nella risposta HTML : un utente può codificare un tag ed eseguire alcuni JavaScript. Assicurarsi di utilizzare Server.Encode () o ripulire manualmente la stringa.
-
valori ID : Se si utilizza la stringa di query ai valori Codice del negozio, un utente potrebbe sostituire quelli con gli altri in a tentare di accedere alle informazioni su cose che non dovrebbero vedere, un esempio di quale potrebbe essere:
L'utente effettua un'ipotesi e cambia questo:
http://domain.com/somepage.aspx?userid=0
E che potrebbe far apparire l'utente Admin.
Altri suggerimenti
Quello che seguiamo nel nostro progetto per l'utilizzo crittografare e decifrare querystring. Posso inviare quella classe per crittografare e funzione di decifrare. Ma per riferimento si può iniziare con seguente URL se aiuta.
http://geekswithblogs.net/casualjim/articles/64639.aspx
Ora, in questo caso è temperato, non poteva essere decifrato. È possibile scrivere eccezione a livello di pagina per esso e reindirizzamento alla corretta pagina di errore.
Fammi sapere se hai bisogno di maggiori informazioni su qualsiasi punto specifico.
Saluti !!!