Pergunta

Eu uso o Ajax (jQuery) e o método de postagem para atualizar dados no banco de dados. Eu faço o seguinte:

  • Obtenha dados do formulário: user_id, entrada_id, conteúdo, ...
  • Envie -os para um URL que processará os dados.
  • Se os dados forem válidos, os registraremos em nosso banco de dados.

Não sei como verificar se o usuário envia dados do meu site e não de outros lugares. Por favor, me ajude a resolver esse problema. Obrigado !

Foi útil?

Solução

Você está tentando se defender CSRF ataques.

A defesa padrão é exigir um token no post que é recuperado de uma solicitação diferente do Ajax. Devido às defesas de domínio cruzado do navegador, o JavaScript que está fora do seu domínio não poderá obter um token.

Outras dicas

Existem várias questões aqui:

  1. Autenticação e autorização do usuário que está fazendo a operação
  2. Proteção contra CSRF.

Decida o que você precisa fazer. O primeiro deve poder ser tratado por cookies, autenticação HTTP (que o navegador envia também solicitações de AJAX) ou algum método personalizado (por exemplo, um parâmetro extra contendo autenticação)

O CSRF é uma questão diferente, mas você pode evitá-lo com bastante facilidade, garantindo que a solicitação realmente chegasse via Ajax, não por um posto de forma normal. Isso deve ser alcançável, abrindo um cabeçalho extra que alguém não pode adicionar ao fazer um formulário HTTP (NB: nem todos os cabeçalhos podem ser adicionados pelo JavaScript, tente usar um cabeçalho X).

Outra possibilidade é não usar um post codificado em formato; Se você espera um objeto JSON no corpo, isso não pode vir de outro site, pois os navegadores não o enviarão por meio de uma postagem HTTP normalmente.

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