Segurança AJAX

Javascript e XML assíncrono (AJAX) é uma das técnicas mais recentes usadas para desenvolver aplicativos da Web para fornecer uma experiência rica ao usuário. Por se tratar de uma nova tecnologia, há muitos problemas de segurança que ainda precisam ser concluídos e abaixo estão alguns problemas de segurança no AJAX.

  • A superfície de ataque é maior porque há mais entradas a serem protegidas.

  • Ele também expõe as funções internas dos aplicativos.

  • Falha em proteger as informações e sessões de autenticação.

  • Há uma linha muito estreita entre o lado do cliente e o lado do servidor, portanto, há possibilidades de cometer erros de segurança.

Exemplo

Aqui está um exemplo para AJAX Security -

Em 2006, um worm infectou o serviço de e-mail do yahoo usando XSS e AJAX que se aproveitou de uma vulnerabilidade no tratamento de eventos onload do Yahoo Mail. Quando um e-mail infectado era aberto, o worm executava seu JavaScript, enviando uma cópia para todos os contatos do Yahoo do usuário infectado.

Mãos em

Step 1- Precisamos tentar adicionar mais recompensas ao seu conjunto permitido de recompensas usando injeção de XML. Abaixo está o instantâneo do cenário.

Step 2- Certifique-se de interceptar a solicitação e a resposta usando o Burp Suite. Configurações iguais às mostradas abaixo.

Step 3- Insira o número da conta conforme fornecido no cenário. Poderemos obter uma lista de todas as recompensas para as quais somos elegíveis. Temos direito a 3 recompensas em 5.

Step 4- Agora vamos clicar em 'Enviar' e ver o que obtemos no XML de resposta. Conforme mostrado abaixo, as três recompensas de que somos elegíveis são passadas para nós como XML.

Step 5 - Agora vamos editar esses XMLs e adicionar as outras duas recompensas também.

Step 6- Agora, todas as recompensas seriam exibidas para o usuário selecionar. Selecione aqueles que adicionamos e clique em 'Enviar'.

Step 7 - A seguinte mensagem aparece dizendo: "* Parabéns. Você concluiu esta lição com sucesso."

Mecanismos Preventivos

Lado do cliente -

  • Use .innerText em vez de .innerHtml.
  • Não use eval.
  • Não confie na lógica do cliente para segurança.
  • Evite escrever código de serialização.
  • Evite construir XML dinamicamente.
  • Nunca transmita segredos ao cliente.
  • Não execute criptografia no código do lado do cliente.
  • Não execute lógica de impacto de segurança no lado do cliente.

Lado do servidor -

  • Use proteção CSRF.
  • Evite escrever código de serialização.
  • Os serviços podem ser chamados diretamente pelos usuários.
  • Evite construir XML manualmente, use a estrutura.
  • Evite construir JSON manualmente, use uma estrutura existente.