Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Estou aki pensando....sempre que tiver um atake via SQL Injection o povo coloca sempre ' (aspas simples)????eu naum sei nada sobre isso.. que pelo oke eu notei nos exemplos dos atakes eles sempre colocam essa ' ....Dai eu vendo uns scripts no laboratorio de scripts onde tem uns que fazem procurar por determinadas palavras.. e retiram elas tipo FROM, SELECT, etc... ai a gente tem o problema de um gringo entrar no site e for escrever alguma coisa e ele vai retirar algumas palavras do comentário do usuario...entaum a minha duvida eh o seguinte, se ele sempre tem que ter essa ', eu poderia fazer com que se ele colocar apenas essa ' ele substituir por 2 ' ???exemplo entradahi ' or 1=1muda parahi '' or 1=1Isso já naum quebraria o atake?
para eliminar o ataque de sql injection só escapar as aspas e passar o sql por parametro
exemplo:
/*http://br2.php.net/get_magic_quotes_gpc
//se tiver ligado o magic_quote eu desligo ele para nao dar erro na hora de usar mysql_escape_string()*/
if ( get_magic_quotes_gpc() ) {
//http://br2.php.net/manual/pt_BR/function.stripslashes.php
$nome = stripslashes($_POST["Nome"]);
$senha = stripslashes($_POST["Senha"]);
}$nome = mysql_escape_string($nome);
$senha = mysql_escape_string($senha);//parametros do sprintf
//http://br2.php.net/manual/pt_BR/function.sprintf.php
$sql = "SELECT * FROM tabela WHERE nome = '%s' AND senha = '%s'";
$sql = sprintf($sql, $nome, $senha);
$re = mysql_query($sql);
use a funcao mysql_real_escape_string(), desabilite magic quotes gpc e register globals.
Use outras funcoes para checar se o usuario digitou palavras como select, insert, drop. etc.
exemplo:
// ===============================================// ANTI SQL INJECTION// ===============================================function SQLInject($txt){ $inject=0;$badword = array(" select","select "," insert","insert "," update","update "," alter","alter "," delete","delete "," drop","drop "," destroy","destroy ","--"); for($i=0;$i<sizeof($badword);$i++){ if(substr_count($txt,$badword[$i])!=0){ $inject=1; } }$charvalidos = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ÁÀÃÂÇÉÈÊÍÌÓÒÔÕÚÙÜÑáàãâçéèêíìóòôõúùüñ!?@#$%&(){}[]:,.-\/ "; for($i=0;$i<strlen($txt);$i++){ $char = substr($txt,$i,1); if(substr_count($charvalidos,$char)==0){ $inject=1; } } return($inject);}para usar faça: if(SQLinject(STRTOLOWER($username)){ die(); }
tambem cuide das strings q vem de GET's , defina se ela eh integer, etc..