Uma preocupação que deve estar presente em todos os programadores Web é a segurança dos seus produtos.
Com este artigo iniciamos uma série de posts em que vamos explorar alguns problemas básicos de segurança relacionados com a injeção de instruções SQL em formulários web ou parâmetros da URL.
Serão apresentados exemplos de código com problemas de segurança e de como os evitar.
Então vamos começar por um simples formulário para login implementado com o seguinte código:
Neste exemplo o código verifica se foi devolvido mais do que um registo da base de dados, assumindo assim que as credenciais fornecidas estão corretas.
Com este artigo iniciamos uma série de posts em que vamos explorar alguns problemas básicos de segurança relacionados com a injeção de instruções SQL em formulários web ou parâmetros da URL.
Serão apresentados exemplos de código com problemas de segurança e de como os evitar.
Então vamos começar por um simples formulário para login implementado com o seguinte código:
Neste exemplo o código verifica se foi devolvido mais do que um registo da base de dados, assumindo assim que as credenciais fornecidas estão corretas.
O maior erro envolve a concatenação dos valores recebidos do formulário com a instrução SQL, permitindo, por isso, que o utilizador manipule a instrução ao seu belo prazer.
Independentemente do nome de utilizador inserido basta escrever na palavra passe o seguinte texto para se optar a indicação de que o login foi concluído com sucesso: o' or 1=1 #
Com este texto a instrução SQL vai devolver sempre um registo pois 1 é igual a 1. O # no final permite ignorar o resto da instrução pois é o simbolo para comentários em MySQL.
A solução para este problema passa por utilizar parâmetros, preparando a instrução antes de a executar. Assim o seguinte código resolve este problema:
Comentários
Enviar um comentário