Esta aplicação foi feita atendendo os requisitos da atividade avaliativa da matéria de Banco de Dados 2 do curso de Ciência da Computação – UNIFEI.
Flavio Mota Gomes -- 2018005379
Rafael Antunes Vieira -- 2018000980
- Contem o código em HTML, responsavel por capturar o login e senha do usuario e passar para o arquivo login.php.
- Contem o código em PHP, responsavel por fazer a conexão com o banco.
- Contem o código em CSS, responsavel pelo estilo de cores, imagens e fonte da pagina da aplicação.
- Arquivo com o banco de dados do PostgreSQL, disponibilizado para restaurar e testar a aplicação.
O SQL Injection consiste em uma técnica de injeção de código com capacidade de acessar ao banco de dados, o que representa um risco. Ocorre, geralmente, durante a entrada de um usuário. Quando solicita-se ao usuário a entrada no sistema, como um nome/senha, o usuário fornece, em vez disso, uma instrução em SQL que será executada no banco de dados sem o conhecimento do administrador do banco.
No arquivo login.php
, o login será concretizado se o usuário e senha digitados corresponderem a um dos pares usuário-senha cadastrados no banco de dados. Para realizar essa conferência, há uma query na aplicação que, por meio de um SELECT, varre o banco para verificar os pares usuário-senha cadastrados. Essa query é da seguinte forma:
SELECT * FROM cliente WHERE nome='$usuario' AND senha='$senha'
As variáveis $usuario e $senha são recebidas na página login.php e correspondem ao que for digitado pelo usuário da aplicação. Há apenas um usuário cadastrado, "teste", com senha "12345". É possível realizar login utilizando-o. Contudo, ao deixar o campo de login em branco e digitar 'or''='
no campo de senha, manipula-se a SQL, que será lida da seguinte forma:
SELECT * FROM cliente WHERE nome='' AND senha=''or''=''
O SQL Injection ocorre, portanto, porque há uma manipulação da SQL através do uso do caracter ', de modo que nome e senha estão vazios e '' = '', ou seja, a aplicação permitirá o login porque vazio é igual a vazio.