anti sql injection
Fala pessoal, bom dia, tudo joia por aí?
Esses dias eu li uma matéria/aula de um site que o @Gabriel Heming compartilhou com a gente aqui no fórum sobre sql injection, acredito que seja um dos melhores conteúdos explicativos sobre sql injection, vou deixar o link aqui pra vcs caso queiram ler também pq vale à pena pra quem quer formatar bem seu sql e proteger seu banco de injeções: https://phpdelusions.net/sql_injection
Gostaria de saber, como vocês fazem pra bloquear sql injection? Digo com relações à verificações antes de inserir qualquer coisa no sql, pq pelo o que entendi no artigo basicamente a sql injection acontece por má formatação do sql e por verificações erradas do conteúdo das variáveis, aí a pessoa de má fé explora essas más formatações.
Hoje tava fazendo uma conexão ao banco de dados e parei pra pensar nisso, com relação à verificações, em um primeiro momento saiu isso
$business_name = $_POST['business'];
$name_business = $_POST['txtuname'];
$email_business = $_POST['txtemail'];
$upass = $_POST['txtpass'];
$active_invoice = $_POST['ativar_fatura'];
$price_business = $_POST['business_price'];
$verify_variables = array($business_name,$name_business,$email_business,$upass,$active_invoice,$price_business);
for($i = 0;$i < count($verify_variables);$i++){
$verify_variables[$i] = str_replace("=", "", $verify_variables[$i]);
$verify_variables[$i] = str_replace("'", "", $verify_variables[$i]);
$verify_variables[$i] = str_replace("`", "", $verify_variables[$i]);
$verify_variables[$i] = str_replace(":", "", $verify_variables[$i]);
$verify_variables[$i] = str_replace(";", "", $verify_variables[$i]);
$verify_variables[$i] = str_replace(",", "", $verify_variables[$i]);
$verify_variables[$i] = str_replace("(", "", $verify_variables[$i]);
$verify_variables[$i] = str_replace(")", "", $verify_variables[$i]);
$verify_variables[$i] = str_replace("\"", "", $verify_variables[$i]);
$verify_variables[$i] = str_replace("INSERT INTO", "", $verify_variables[$i]);
$verify_variables[$i] = str_replace("DELETE FROM", "", $verify_variables[$i]);
$verify_variables[$i] = str_replace("SELECT FROM", "", $verify_variables[$i]);
$verify_variables[$i] = str_replace("SELECT * FROM", "", $verify_variables[$i]);
$verify_variables[$i] = str_replace("SELECT *", "", $verify_variables[$i]);
$verify_variables[$i] = str_replace("DELETE * FROM", "", $verify_variables[$i]);
$verify_variables[$i] = str_replace("DELETE *", "", $verify_variables[$i]);
}
Existe bastante discussão com relação às aspas simples ', como no caso de alguém com nome de Hanna O'hara, bastante comum nos estados unidos esse estilo de nome, mas aqui no Brasil acredito que quase ninguém tenha esse nome com aspas simples, a não ser se um gringo for utilizar.
Eu sinceramente ainda não sei utilizar 100% o htmlentities(), htmlspecialchars(), mysql_real_string_escape() e derivados pra fazer uma boa verificação assim que receber a variável, como os $_POST[''] lá em cima que estão tudo "pelado" sem nenhuma pré verificação com htmlentities, htmlspecialchar ou mysql_real_string_escape.
Como vocês fazem? O que vocês adicionariam ou removeriam nesse código que dei de exemplo? Ou se fariam completamente diferente.
Valeu rapaziada, abração pra vocês e fiquem com Deus.Discussão (8)
Carregando comentários...