come dovremmo convalidare http intestazione referrer in aspx .net
-
21-08-2019 - |
Domanda
Voglio assicurare garantire che niente di sconveniente entra nel referrer su una pagina di errore.
Che cosa dovrei check-in al fine di convalidare l'intestazione http.
Sotto è il mio codice corrente:
// Ensure the referrer header is good
if (this.Request.UrlReferrer.IsWellFormedOriginalString() &&
this.Request.UrlReferrer.Host.Equals(this.Request.Url.Host))
{
questo fallirà una scansione Acunetix che utilizza% 3C e 3E% al posto di
Aggiorna Riesco ad afferrare tutte le scansioni Acunetix usando il codice seguente:
if (this.Request.UrlReferrer.IsWellFormedOriginalString() &&
this.Request.UrlReferrer.Host.Equals(this.Request.Url.Host) &&
!Regex.IsMatch(this.Request.UrlReferrer.ToString(),
"%3C",
RegexOptions.IgnoreCase))
{
Soluzione
Voglio assicurare garantire che niente di sconveniente entra nel referrer su una pagina di errore.
Poi sempre HTML-escape qualsiasi stringa - compreso URLs di riferimento -. Che in uscita alla pagina di errore
Cercando di individuare e ingresso blacklist contenente caratteri potenzialmente pericolose, caso per caso viene a farlo all'indietro. Probabilmente non cattura tutti i possibili attacchi, e sarete inutilmente non consentire URL validi. (E 'perfettamente ragionevole avere un URL con ‘% 3C’ in.)
Altri suggerimenti
this.Request.UrlReferrer può essere nullo, se non referrer è stato fornito o ha partecipato.