Como devemos validar http cabeçalho de referência em asp .net
-
21-08-2019 - |
Pergunta
Eu quero assegurar assegurar que nada desagradável entra a referência em uma página de erro.
O que devo estar verificando a fim de validar o cabeçalho HTTP.
Abaixo está o meu código atual:
// Ensure the referrer header is good
if (this.Request.UrlReferrer.IsWellFormedOriginalString() &&
this.Request.UrlReferrer.Host.Equals(this.Request.Url.Host))
{
este irá falhar uma Acunetix verificação que usos% 3C e 3E% em vez de
Atualizar Eu posso pegar todos os scans Acunetix usando o código abaixo:
if (this.Request.UrlReferrer.IsWellFormedOriginalString() &&
this.Request.UrlReferrer.Host.Equals(this.Request.Url.Host) &&
!Regex.IsMatch(this.Request.UrlReferrer.ToString(),
"%3C",
RegexOptions.IgnoreCase))
{
Solução
Eu quero assegurar assegurar que nada desagradável entra a referência em uma página de erro.
Em seguida, sempre HTML-escapar qualquer string - incluindo URLs do referenciador -. Que você saída para a página de erro
Tentando escolher e entrada de lista negra contendo caracteres potencialmente perigosos numa base caso-a-caso está fazendo isso para trás. Você provavelmente não vai pegar todos os ataques possíveis, e você vai desnecessariamente impedir os URLs válidos. (É perfeitamente razoável ter uma URL com ‘% 3C’ in.)
Outras dicas
this.Request.UrlReferrer pode ser nulo, se não houver referrer foi fornecido ou participou.