Como saber de onde vem o POST?

05/12/2015

Tem alguma forma de descobrir de onde vem o POST. Pra evitar que outros sites enviam dados de outro formulário ou por cURL?
Já pensei em $_SERVER['HTTP_REFERER'], mas não é confiável. E sobre sessions, se o cara não executar qualquer página do site, vai ativar a session, fazendo assim com que ele possa enviar os dados sem problema?

PHP

Jardson Sales

Melhor resposta

05/12/2015

Você cria uma session com um valor de hash aleatório somente na página do formulário, atribui o valor dessa session a um campo do tipo de hidden.

Quando receber os dados da submissão no PHP compara o valor enviado pelo hidden com o valor em session, se for igual processa a informação.

E mesmo não sendo 100% confiável também pode usar $_SERVER['HTTP_REFERER'], o segredo é a profundidade das camadas de segurança.

Quanto mais melhor, desde que você não sacrifique a usabilidade da sua página.

Esse site possui um catálogo com vários tipos de ataques e possíveis prevenções https://www.owasp.org/index.php/PHP_CSRF_Guard

William (devwilliam)

Responder Citar

Outras Respostas

05/12/2015

Jardson Sales

Muito obrigado William!
Realmente uma token em um campo hidden resolve tudo!
E REFERER realmente é inválido, porque o próprio cURL pode alterar o valor dela. Mas não deixa de ser uma segurança a mais...
Abraço
Responder Citar