Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Proteger a lógica de negócio

Galera, Estou começando a fazer meu projeto de tcc em php e estou com algumas pontas soltas aqui. Vamos supor que eu tenha um formulário de cadastro de usuários que se chama "cadastro-usuario.php". Esse formulário quando submetido vai para página "cadastrar.php" que recebe os campos via POST e executa a lógica de negócio. Até ai tudo bem, mas e se meu usuário dar uma de esperto e pular direto para página "cadastrar.php" sem passar antes pelo formulário de cadastro?

Sei que eu poderia usar If's para verificar se os campos enviados por POST existe, mas isso não me parece que seja a forma correta. Tambem pensei em colocar no formulário um campo tipo hidden e verficar no "cadastrar.php" se ele existe antes de qualquer coisa.

Gostaria de saber qual é a prática recomendada nessas situações.

Obrigado!

3 respostas
solução!

Oi Felipe, os dois casos são válidos para essa problemática que você comenta, mas a primeira é menos custosa e você terá que verificar os campos de qualquer forma. É uma boa prática verificar os campos tanto no servidor quanto no cliente.

Você pra facilitar essa questão, antes de verificar os campos do formulário pode verificar apenas se a requisição foi POST, se não foi, manda para uma página de erro.

A segunda forma adiciona uma camada a mais de segurança, onde além da requisição ser post, você tem certeza que aquele post veio da sua página e não da página de terceiros, isso é conhecido com CSRF se eu não estiver enganado. Todo framework mais moderno tem uma forma de fazer isso. Lembrando que esse valor do hidden precisa ser aleatório, se não, de nada vai adiantar.

Pegou a ideia? Eu faria os dois!

Concordo com o que o Wanderson escreveu. Mas será que para um projeto de tcc usar o php como você esta estruturando é a melhor forma? Por que não usa um framework como o Laravel? Se sua aplicação tende a ficar grande, talvez seja melhor adotar um framework

Obrigado, vou pesquisar sobre CSRF e o framework laravel. Eu resolvi fazer o projeto todo utilizando php puro porque como não conhecia nada da linguagem não achei interesante começar utilizando um framework. Espero que esteja no caminho certo hahaha Agradeço a todos.