[Cascavel-pm] Existe maneira de fazer um auto escape de aspas em cgi perl
Solli Moreira Honorio
shonorio em terra.com.br
Terça Fevereiro 14 03:53:13 PST 2006
> A substibuicao por :
>
> $sth = $dbh->prepare("INSERT INTO table ( id, valor ) VALUES ( ?, ? )");
> $sth->execute($Id, $Valor);
>
> resolve o problema ... mas tem de ser feito em varios locais ...
>
Este cara tem outras vantagens, uma é que se você pode ganhar velocidade na inserção em massa, e no select,
pois ele 'compila' (verifica sintaxes) o comando e depois só executa o commando com os dados.
A outra vantagem é que reduz o risco de sql injection, pois ele considerará a entrada como uma string completa,
e não cai nos truques simples desta técnica. Digamos você está num formulário que recebe um email como chave de
usuário, o cara pode enviar um 'condicional' para sempre ter valor = 1 do teu select, como no exemplo abaixo.
SELECT fieldlist
FROM table
WHERE field = 'anything' OR 'x'='x'; -- aqui é um select com um 'or' que sempre é verdadeiro
... neste caso, ele vai fazer algo como :
SELECT fieldlist
FROM table
WHERE field = q{'anything' OR 'x'='x'}; -- isto aqui é uma string completa, que retornará falso
Por este motivo sempre utilizo o prepare, vai por mim, vale a pena.... você não perde nada, mas pode ganhar
muito....
Solli M. Honório
Mais detalhes sobre a lista de discussão Cascavel-pm