Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

diasgabrie

verificar post partiu do site

Recommended Posts

amigos, como eu poderia verificar se os dados enviados para uma página do meu site realmente partiram de uma página do meu site e não uma página externa dando post para meu site.

 

obrigada

Compartilhar este post


Link para o post
Compartilhar em outros sites

A maneira mais simples de se fazer isso é gerando um token.

 

Por exemplo, você pode criar um hash MD5 contendo informações de quem está acessando o site (navegador e IP) e uma palavra secreta. Na hora que o formulário for submetido você checa estas informações.

 

Exemplo:

 

<?php
$palavra_secreta = '1234 lalala';
$token = md5($_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT'] . $palavra_secreta);

$acao = isset($_POST['acao']) ? $_POST['acao'] : '';

if ($acao == 'enviar') {
if ($_POST['token'] == $token) {
	echo '<p>Post enviado pelo site.</p>';
} else {
	echo '<p>Tentativa de SPAM.</p>';
}
}
?>
<form action="" method="post">
<label for="nome">Nome</label>
<input type="text" name="nome" id="nome" />
<input type="hidden" name="token" value="<?php echo $token; ?>" />
<input type="hidden" name="acao" value="enviar" />
<input type="submit" value="enviar" />
</form>

 

Note que cada vez que o script for executado vai ser gerado o hash MD5 com as informações do usuário e a palavra secreta, esse hash deverá ser sempre o mesmo. Se o usuário submeter o formulário e o token for diferente do gerado internamente não irá passar pela validação.

 

O usuário precisa enviar o formulário usando o mesmo navegador e IP que gerou o token. ;)

 

Esta validação baseada em tokens ajuda bastante a prevenir a ação de spammers, mas não é 100% garantido já que um bot poderia perfeitamente acessar o seu site, coletar o token e enviar um POST usando o mesmo IP e USER_AGENT. Algo mais seguro, mas ao mesmo tempo mais chato para o usuário, seria usar os famosos captchas.

 

Um abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Humm....

Deixa eu ver se eu entendi. Você ressuscitou um tópico, com mais de 5 anos, sobre segurança, para dar uma solução que, desde antes das respostas dadas, já era vulnerável a ataques?

Para entender mais: http://stackoverflow.com/a/861160

PS.: Respostas antigas não necessariamente estão erradas, mas podem estar defasadas. Isso é padrão de qualquer linguagem de programação. Entretanto, a resposta já apresenta ainda se mostra eficiente, sem excluir a possibilidade de existirem melhores práticas.

Evite ressuscitar tópicos. Se for o caso, crie um novo e atualizado. O resto o google se encarrega de fazer se é relevante ou não.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.