Question

Je veux assurer que rien ne pénètre dans impropice assurer la referrer sur une page d'erreur.

Que dois-je vérifiais afin de valider l'en-tête http.

ci-dessous est mon code actuel:

// Ensure the referrer header is good
if (this.Request.UrlReferrer.IsWellFormedOriginalString() &&
    this.Request.UrlReferrer.Host.Equals(this.Request.Url.Host))
{

échouera une analyse de Acunetix qui utilise% 3C et% 3E au lieu de par exemple, alors je dois évidemment couvrir le codage html - est autre chose que je suis absent

Mise à jour Je peux attraper tous les scans Acunetix en utilisant le code ci-dessous:

if (this.Request.UrlReferrer.IsWellFormedOriginalString() &&
    this.Request.UrlReferrer.Host.Equals(this.Request.Url.Host) &&
    !Regex.IsMatch(this.Request.UrlReferrer.ToString(),
                   "%3C",
                   RegexOptions.IgnoreCase))
{
Était-ce utile?

La solution

  

Je veux assurer que rien ne pénètre dans impropice assurer la referrer sur une page d'erreur.

Alors toujours HTML échapper à toute chaîne - y compris les URL referrer -. Que la sortie sur la page d'erreur

Essayer de choisir et l'entrée de liste noire contenant des caractères potentiellement dangereux au cas par cas le fait en arrière. Vous ne serez probablement pas attraper toutes les attaques possibles, et vous désavouer inutilement des URL valides. (Il est tout à fait raisonnable d'avoir une URL avec « % 3C » in.)

Autres conseils

this.Request.UrlReferrer peut être nul, si aucun referrer a été fourni ou a participé.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top