Olá amigos do blog,
Vou alterar a postagem realizada no dia 14/04/2014 - cujo o título é: COMEÇANDO O PHP DE FORMA SIMPLES E FÁCIL – PARTE.07 (ALTERANDO DADOS). Devido a uma falha de segurança, que poderá ocorrer durante a transmissão de parâmetros entre o formulário HTML e o PHP, no processo de alteração de dados.
Abaixo segue o script utilizado na postagem:
<?php
$codigo=5;
$conexao=mysql_connect("localhost","root","123");
mysql_select_db("escola");
//REALIZANDO A PESQUISA NA TABELA
$pesquisa=mysql_query("select * from alunos where codigo='$codigo'");
$linha=mysql_fetch_array($pesquisa);
//DEFINIDO OS DADOS QUE SERÃO ALTERADOS
$codigo=$linha["codigo"];
$nome=$linha["nome"];
$endereco=$linha["endereco"];
$email=$linha["email"];
$nascimento=$linha["data_nascimento"];
//CRIANDO O FORMULÁRIO
echo"Alterar dados do Aluno:<br>
$codigo=5;
$conexao=mysql_connect("localhost","root","123");
mysql_select_db("escola");
//REALIZANDO A PESQUISA NA TABELA
$pesquisa=mysql_query("select * from alunos where codigo='$codigo'");
$linha=mysql_fetch_array($pesquisa);
//DEFINIDO OS DADOS QUE SERÃO ALTERADOS
$codigo=$linha["codigo"];
$nome=$linha["nome"];
$endereco=$linha["endereco"];
$email=$linha["email"];
$nascimento=$linha["data_nascimento"];
//CRIANDO O FORMULÁRIO
echo"Alterar dados do Aluno:<br>
<form method=\"post\" action=\"gravar_alteracao.php?codigo=$codigo\">
Nome do Aluno(a)<input type=\"text\" name=\"nome\" size=\"20\" value=\"$nome\"><br>
Endereço do Aluno(a)<input type=\"text\" name=\"endereco\" size=\"25\" value=\"$endereco\"><br>
E-mail do Aluno(a)<input type=\"text\" name=\"email\" size=\"30\" value=\"$email\"><br>
Data de Nascimento do Aluno(a)<input type=\"text\" name=\"data\" size=\"10\" value=\"$nascimento\"><br>
<input type=\"submit\" value=\"Gravar\"><br>
</form>";
Nome do Aluno(a)<input type=\"text\" name=\"nome\" size=\"20\" value=\"$nome\"><br>
Endereço do Aluno(a)<input type=\"text\" name=\"endereco\" size=\"25\" value=\"$endereco\"><br>
E-mail do Aluno(a)<input type=\"text\" name=\"email\" size=\"30\" value=\"$email\"><br>
Data de Nascimento do Aluno(a)<input type=\"text\" name=\"data\" size=\"10\" value=\"$nascimento\"><br>
<input type=\"submit\" value=\"Gravar\"><br>
</form>";
?>
Bem, na linha:
<form method=\"post\" action=\"gravar_alteracao.php?codigo=$codigo\">
Utilizei a url para passar uma informação valiosa, que permitir identificar qual registro desejo alterar -> codigo=$codigo.
Essa maneira permite que possa ocorrer uma injeção de códigos SQL e dependendo do nível de conhecimento do invasor, recuperar informações valiosas das tabelas do banco de dados.
Uma solução simples e fácil, seria enviar uma variável no próprio código do formulário, junto com as demais variáveis do formulário, dessa forma:
Remover da tag form codigo=$codigo
Adicionar
<input type=\"hidden\" name=\"codigo\" value=\"$codigo\">
No script
responsável por gravar as alterações (gravar_alteracao.php),
alterar:
A linha
$codigo=$_GET[“codigo”];
Substituir por:
$codigo=$_POST[“codigo”];
Fácil, somente isso
para resolver em parte o problema.