Impedir ataques de CSRF

Como os ataques de CSRF funcionam

A falsificação de solicitação entre sites (CSRF) é uma vulnerabilidade de site na qual um navegador de usuário válido é usado para enviar uma solicitação mal-intencionada, possivelmente por meio de um iFrame. Como o navegador envia cookies por domínio, se o usuário estiver conectado no momento a um aplicativo, os dados do usuário podem estar comprometidos.

Por exemplo, considere um cenário em que você está conectado ao console de administração em um navegador. Você recebe uma mensagem de email contendo um link. Clique no link, que abre uma nova guia no navegador. A página aberta contém um iFrame oculto que faz uma solicitação mal-intencionada ao servidor de formulários usando o cookie da sessão de formulários AEM autenticados. Como o Gerenciamento de usuários recebe um cookie válido, ele envia a solicitação.

Referenciador: O endereço da página de origem da qual uma solicitação está vindo. Por exemplo, uma página da Web no site1.com contém um link para site2.com. Clicar no link postou uma solicitação para site2.com. O referenciador desta solicitação é site1.com porque a solicitação é feita de uma página cuja fonte é site1.com.

URIs Incluir na lista de permissões: URIs identificam recursos no servidor de formulários que estão sendo solicitados, por exemplo, /adminui ou /contentspace. Alguns recursos podem permitir que uma solicitação entre no aplicativo de sites externos. Esses recursos são considerados URIs incluir na lista de permissões. O servidor de formulários nunca realiza uma verificação de referenciador de URIs incluir na lista de permissões.

Referenciador nulo: Quando você abre uma nova janela ou guia do navegador, digita um endereço e pressione Enter, o referenciador é nulo. O pedido é inteiramente novo e não tem origem numa página Web principal; por conseguinte, não existe um referenciador para o pedido. O servidor de formulários pode receber um referenciador nulo de:

  • solicitações feitas em pontos de extremidade SOAP ou REST da Acrobat
  • qualquer cliente desktop que faça uma solicitação HTTP em um ponto de extremidade AEM formulários SOAP ou REST
  • quando uma nova janela do navegador é aberta e o URL de qualquer página de logon de aplicativo da Web para formulários AEM é inserido

Permita um referenciador nulo nos pontos finais SOAP e REST. Também permite um referenciador nulo em todas as páginas de logon de URI, como /adminui e /contentspace, e seus recursos mapeados correspondentes. Por exemplo, o servlet mapeado para /contentspace é /contentspace/faces/jsp/login.jsp, que deve ser uma exceção de referenciador nula. Essa exceção é necessária somente se você ativar a filtragem de GET para seu aplicativo da Web. Seus aplicativos podem especificar se permitem referenciadores nulos. Consulte "Protegendo contra ataques de falsificação de solicitações entre sites" em Proteção e segurança para formulários AEM.

Exceção de referenciador permitida:Exceção de referenciador permitida é uma sublista da lista de referenciadores permitidos, a partir da qual as solicitações são bloqueadas. As Exceções de referência permitidas são específicas a um aplicativo da Web. Se um subconjunto dos Referenciadores permitidos não tiver permissão para invocar um determinado aplicativo da Web, você pode lista de bloqueios os referenciadores por Exceções de referenciador permitidas. Exceções de referenciador permitidas são especificadas no arquivo web.xml para seu aplicativo. (Consulte "Protegendo contra ataques de falsificação de solicitação entre sites" em Proteção e segurança para formulários AEM na página Ajuda e Tutorials.)

Como os referenciadores permitidos funcionam

AEM formulários fornecem filtragem de referenciador, o que pode ajudar a impedir ataques de CSRF. Veja como a filtragem de referenciador funciona:

  1. O servidor de formulários verifica o método HTTP usado para a invocação:

    • Se for POST, o servidor de formulários executará a verificação do cabeçalho do referenciador.
    • Se for GET, o servidor de formulários ignorará a verificação do referenciador, a menos que CSRF_CHECK_GETS esteja definido como true, nesse caso, ele executa a verificação do cabeçalho do referenciador. CSRF_CHECK_GETS é especificado no arquivo web.xml para seu aplicativo. (Consulte "Protegendo contra ataques de falsificação de solicitação entre sites" em Guia de proteção e segurança.)
  2. O servidor de formulários verifica se o URI solicitado está incluir na lista de permissões:

    • Se o URI for incluir na lista de permissões, o servidor transmitirá a solicitação.
    • Se o URI solicitado não for incluir na lista de permissões, o servidor recuperará o referenciador da solicitação.
  3. Se houver um referenciador na solicitação, o servidor verificará se ele é um referenciador permitido. Se for permitido, o servidor verifica se há uma exceção de referenciador:

    • Se for uma exceção, a solicitação será bloqueada.
    • Se não for uma exceção, a solicitação será transmitida.
  4. Se não houver referenciador na solicitação, o servidor verificará se um referenciador nulo é permitido.

    • Se um referenciador nulo for permitido, a solicitação será transmitida.
    • Se um referenciador nulo não for permitido, o servidor verificará se o URI solicitado é uma exceção para referenciador nulo e tratará a solicitação de acordo.

Configurar referenciadores permitidos

Quando você executa o Configuration Manager, o host padrão e o endereço IP ou o servidor de formulários são adicionados à lista Referenciador Permitido. Você pode editar essa lista no console de administração.

  1. No console de administração, clique em Configurações > Gerenciamento de usuários > Configuração > Configurar URLs de referência permitidos. A lista Referenciador Permitido é exibida na parte inferior da página.

  2. Para adicionar um referenciador permitido:

    • Digite um nome de host ou endereço IP na caixa Referenciadores permitidos. Para adicionar mais de um referenciador permitido de cada vez, digite cada nome de host ou endereço IP em uma nova linha.
    • Nas caixas Porta HTTP e Portas HTTPS, especifique quais portas serão permitidas para HTTP, HTTPS ou ambos. Se você deixar essas caixas vazias, as portas padrão (porta 80 para HTTP e porta 443 para HTTPS) serão usadas. Se você inserir 0 (zero) nas caixas, todas as portas desse servidor serão ativadas. Você também pode inserir um número de porta específico para ativar somente essa porta.
    • Clique em Adicionar.
  3. Para remover a entrada da lista Referenciador Permitido, selecione o item da lista e clique em Excluir.

    Se a Lista de referência permitida estiver vazia, o recurso CSRF para de funcionar e o sistema fica inseguro.

  4. Depois de alterar a lista de referência permitida, reinicie o servidor de formulários AEM.

Nesta página