Quando recebemos dados de um variável pelos métodos POST, GET... Não dá pra usar as funções do PHP para verificar se se trata de um número ou uma palavra, frase, etc, porque o PHP trata todos esses dados como sendo strings, então, usar funções como is_int, não vai funcionar.
Algo simples que podemos fazer é o seguinde:
$valor = $_GET['valor']; //ou $_POST['valor']...
if ( $valor / 1 == 0){
header("Location: pagina_de_noticias.php");//redireciona a página
die();
}
O código acima funciona, pois, se dividirmos um texto por 1 (um), o resultado será smpre (zero).
Isso pode ser útil em uma página de notícias por exemplo.
Imagine que vc tenha um link referente a determinada notícia, assim:
< href="ler_noticia.php?id-noticia=15">....
Para evitar fraudes como SQL Injection, é essencial que na página ler_noticia.php, vc coloque o código acima para verificar se realmente o que foi recebido na página foi um número (id) referente a alguma notícia, e não uma instrução maliciosa.
Outra forma de evitar SQL Injection é usar as funções do PHP para limpeza de string.
Abaixo uma simples função que criei com esse objetivo:
function limpa_dados ($frase){
$frase = addslashes(strip_tags($frase));//retiras as tags PHP e HTML e coloca / antes das aspas, ou seja, escapa as aspas ( ', " )
$frase = preg_replace(sql_regcase("/(from|select|insert|delete|where|drop table|show tables|#|\*|--|\\\\)/"),"",$frase);//retira possíveis instruções SQL
$frase = trim($frase);
$simbolos = array('=','OR','AND');//acrescente os símbolos que achar conveniente
foreach ($simbolos as $simbolo){
$frase = str_replace($simbolo,'',$frase);//retira os símbolos nocivos
}
return($frase);
}
$valor_recebido = limpa_dados($_POST['valor']);
No array símbolos, vc pode acrescentar qualquer um que vc achar que possam porventura tentar utilizar para fraudar seu site.
Espero que seja útil pra vc essas dicas.
E não se esqueça que segurança é tão, ou mais importante, que um Designer legal de um site. Apesar das pessoas não verem, lembrarão que o site delas nunca teve problemas com Hackers, Craker e outros filhos da put.... da mesma classe.
terça-feira, 3 de julho de 2007
Assinar:
Postagens (Atom)
