¿cómo debemos validar encabezado http referrer en aspx .net
-
21-08-2019 - |
Pregunta
Quiero para asegurarse de asegurarse de que nada malo se mete en la referencia a una página de error.
¿Qué debería ser la comprobación con el fin de validar el encabezado http.
a continuación es mi código actual:
// Ensure the referrer header is good
if (this.Request.UrlReferrer.IsWellFormedOriginalString() &&
this.Request.UrlReferrer.Host.Equals(this.Request.Url.Host))
{
esto producirá un acunetix búsqueda que utiliza C %3 y %3E en lugar de < y > por ejemplo, así que obviamente necesita para cubrir la codificación html - hay algo que me estoy perdiendo?
Actualización Puedo coger todos los acunetix escaneados utilizando el siguiente código:
if (this.Request.UrlReferrer.IsWellFormedOriginalString() &&
this.Request.UrlReferrer.Host.Equals(this.Request.Url.Host) &&
!Regex.IsMatch(this.Request.UrlReferrer.ToString(),
"%3C",
RegexOptions.IgnoreCase))
{
Solución
Quiero garantizar garantizar nada adverso se mete en la de referencia en una página de error.
A continuación, siempre HTML escapar cualquier cadena - incluyendo URL de referencia -. Que la salida a la página de error
Tratar de escoger y la entrada de lista negra que contiene caracteres potencialmente peligrosos en una base de caso por caso, está haciendo al revés. Probablemente no va a coger todos los ataques posibles, y se le innecesariamente no permitir URLs válidos. (Es perfectamente razonable tener una URL con ‘% 3C’ pulg.)
Otros consejos
this.Request.UrlReferrer puede ser nula, si no se proporcionó de referencia o ha participado.