Olá pessoal, gostaria de abrir um outro ponto sobre a segurança que vimos no sistema neste curso. No caso do curso, você vai ali e cria uma função de segurança que valida a $_SESSION["email"] que é criada ao logar. Porém, digamos que tenhamos uma outra situação:
"Um projeto onde todos os usuários podem gravar e consultar no banco de dados ( digamos um projeto de blog de noticias onde todos usuários cadastrados podem efetuar ações no mysql )."
O problema é que todos os usuários terão a $_SESSION["email"] ativa, pois todos estão logados ! Então, eu poderia por exemplo no botão de deletar meu post, passar um id_noticia que não seria o meu e dessa forma eu iria deletar o conteúdo de outro usuário. Isso serve também para gravar no banco, selecionar noticias que não seriam minhas, etc.
Como proceder então dessa forma ? A minha ideia seria criar uma hash de segurança extensa(criptografia) e guardar no banco como campo "token_segurança". Todas as tabelas do banco, devem ter esta coluna "token_seguranca". Ao logar, eu busco essa hash e salvo nas minhas sessions e TODA e qualquer sql que vai para o banco, antes da ação, bate nessa validação e verifica se é o mesmo token e daí sim executa a função.
Seria essa a forma ideal ? O problema disso é que toda vez que for fazer qualquer ação no banco, primeiramente eu terei que fazer um select nessa tabela e consultar esse token para ver se bate, caso contrário retorna função de proibido.
Outra questão: por mais que eu envie um input hidden na ação de editar um formulário, eu posso pelo html mudar o id dele e enviar junto. Mesmo com o parâmetro readonly="true", eu mudo para false e também consigo alterar o value passando para a ação do form. Alguém possui uma ideia ?
Abraço e desculpa pelo textão hehe.