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 , por exemplo, para que eu, obviamente, necessidade de cobrir html codificação -? É outra coisa lá qualquer coisa que eu estou ausente

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))
{
Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top