Pergunta

Qual é a prática recomendada para garantir que determinadas chamadas ajax para determinadas páginas sejam aceitas apenas por usuários autenticados?

Por exemplo:

Digamos que eu tenha uma página principal chamada blog.php (Eu sei, a criatividade é abundante).Digamos também que existe uma página chamada excluir.php que procura o parâmetro post_id e então exclui alguma entrada de um banco de dados.

Neste exemplo muito inventado, existe algum mecanismo no blog.php que envia uma solicitação via ajax para delete.php para excluir uma entrada.

Agora esse mecanismo só estará disponível para usuários autenticados no blog.php.Mas o que impede alguém de simplesmente ligar para delete.php com um monte de números aleatórios e deletar tudo no site?

Fiz um teste rápido onde configurei uma variável de sessão no blog.php e depois fiz uma chamada ajax para delete.php para retornar se a variável de sessão estava definida ou não (não foi).

Qual é a maneira aceita de lidar com esse tipo de coisa?


OK.Devo ter ficado louco na primeira vez que tentei isso.

Acabei de fazer outro teste como o que descrevi acima e funcionou perfeitamente.

Foi útil?

Solução

Você estava certo ao tentar usar variáveis ​​de sessão.Depois que o usuário for autenticado, você deverá armazenar essas informações na sessão dele para que cada visualização de página subsequente veja isso.Certifique-se de estar ligando session_start() em ambas as páginas (blog.php e delete.php) antes de acessar $_SESSION.Certifique-se também de ter os cookies ativados - caso contrário, você deve passar um parâmetro adicional na string de consulta, geralmente PHPSESSID=<session_id()>.

Outras dicas

Não é recomendado confiar em sessões para autenticação sem realizar ações adicionais.Leia mais em.

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