Pular para o conteúdo principal

Escapar sql e html


Felizmente nunca mais vi nenhum script com aberrações anti-sql-injection, mas há algum tempo era possível encontrar pessoas removendo palavras-chave de SQL de todas as strings que íam para o banco de dados. Se o usuário digitasse palavras como select, delete ou drop, elas eram simplesmente removidas da frase. Isso quando o programador não interrompia o script e acusava o usuário de estar tentando explorar alguma falha de segurança. Eu juro, isso existia.
Ao trabalhar com PDO, a melhor opção (pra não dizer a única!) é utilizar prepare e execute pra separar a query em si dos seus parâmetros:
1
2
3
4
5
6
7
8
9
10
11
12
$conexao = new PDO('mysql:dbname=banco;host=localhost', 'login', 'senha');
  
$uf = 'RJ';
$idade = 18;
  
$sth = $conexao->prepare('SELECT nome FROM pessoa WHERE uf = ? AND idade > ?');
  
$sth->execute(array($uf, $idade));
  
while ( $row = $sth->fetch() ) {
    echo $row['nome'];
}
Fonte: http://www.phpit.com.br/artigos/7-coisas-simples-em-php-que-alguns-ainda-complicam.phpit

Comentários

Postagens mais visitadas deste blog

Lista de órgãos emissores de RG

Para quem quiser normalizar os órgãos emissores de RG, aí vai uma lista retirada do site da FGV: SSP - Secretaria de Segurança Pública PM - Polícia Militar PC - Policia Civil CNT - Carteira Nacional de Habilitação DIC - Diretoria de Identificação Civil CTPS - Carteira de Trabaho e Previdência Social FGTS - Fundo de Garantia do Tempo de Serviço IFP - Instituto Félix Pacheco IPF - Instituto Pereira Faustino IML - Instituto Médico-Legal MTE - Ministério do Trabalho e Emprego MMA - Ministério da Marinha MAE - Ministério da Aeronáutica MEX - Ministério do Exército POF - Polícia Federal POM - Polícia Militar SES - Carteira de Estrangeiro SJS - Secretaria da Justiça e Segurança SJTS - Secretaria da Justiça do Trabalho e Segurança ZZZ - Outros (inclusive exterior)

Comparar dois números float em PHP

Para não passar raiva comparando dois números float com PHP nunca faça algo do tipo abaixo: $a = 0.1; $b = 0.2; if ($a + $b == 0.3) {     echo 'Igual'; } else {     echo 'Diferentes'; } Se fizer isso, vai ver que dá problema devido ao modo como o PHP guarda os valores float. Para resolver isso criei a função abaixo para comparar dois valores do tipo float. /** * Esta função recebe dois números como parâmetro.   * Se os números forem iguais, ou seja, se a diferença  * entre eles for menor que a margem de erro aceitável,   * a função retorna 0, caso contrário retorna -1 se o  * primeiro número for menor, * ou então 1 caso o segundo  * seja o menor   * @param float $a   * @param float $b   * @return 0 (igual), -1($num1 menor), 1($num2 menor)   */ function compara_float( $num1 , $num2 , $precisao = 5 ) {   $desprezar = pow ( 0.1 , $precisao );   $diff = abs ( $num1 - $...