comment devrions-nous valider en-tête http referrer dans ASPX .net
-
21-08-2019 - |
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
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))
{
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é.