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 per esempio, perché io, ovviamente, bisogno di coprire la codifica HTML - c'è qualcos'altro che mi manca

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))
{
È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top