<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
Então, no caso, suponha-se que o $something provenha de um CGI do tipo
$something = $query->param('something');<br>
Suponhamos que eu não faça nenhum tratamento, apenas verifique se a
variável $something não é nula...<br>
<br>
Se lá no meu html, o usuário colocar no campo input something = "1' or
true" ou qualquer outro suposto SQL Injection, mesmo assim o Perl
interpreta isso como variável. Eu já tentei várias combinações, e mesmo
eu conhecendo meu banco de dados, minhas variáveis, nome de campos, a
forma como o programa foi construído, ainda assim não consegui um furo
de segurança com SQL injection. No máximo, consegui um erro do tipo
"500", ou seja, eu acho que isso do SQL Injection é mais mito do que
verdade... Se bem que talvez o ASP tenha conseguido esta façanha em
algum momento da história, pois até aquela máxima que "foto não tem
vírus" eles conseguiram mudar (hehehehe).<br>
<br>
<br>
SDS,<br>
<br>
Luciano<br>
<br>
<br>
Alexandre de Abreu escreveu:
<blockquote
cite="midcbaad2900707240938n523b2fc2r74ee79f82fbf934@mail.gmail.com"
type="cite">
<pre wrap="">Opa,
Um código vulnerável ao ataque "SQL Injection", neste caso, é o código
Perl(ou da API que implementa o acesso ao DB), assim como podem
acontecer com outras linguagens(Java, ASP, etc.), e não no código SQL
em si. PoC:
SELECT `name` FROM `table` WHERE `id` = [$something]
Este código está errado? O que tá errado?
Ele é vulnerável a SQL Injection? Depende de como a variável de
entrada é formada, filtrada, etc.
Alexandre
On 24/07/07, Gabriel Vieira <a class="moz-txt-link-rfc2396E" href="mailto:gabriel.vieira@gmail.com"><gabriel.vieira@gmail.com></a> wrote:
</pre>
<blockquote type="cite">
<pre wrap="">SQL Injection não tem nada haver com Perl, e sim com o código SQL
utilizado, o placeholders, além de otimizar o código, deixá-lo mais
limpo e permitir uma melhor manutenção, também valida as entradas
enviadas aos códigos SQL, o que no caso o torna quase ou imune a SQL
injections.
O fato do seu código ser complexo exige a utilização de Placeholders,
eles servem para que você tenha trabalhar em alterar uma pequena parte
de um enorme código além do que podem ser montados em tempo de
execução também.
Onde você vê mais trabalho? Todos aqui somos amantes do pouco
trabalho, apesar de só o Eden, Roan e Joênio serem baianos, somos
todos programadores Perl ;) e se indicamos a utilização de
placeholders é porque irá dar menos trabalho, senão agora, quem sabe
daqui uma semana. :)
On 7/24/07, Luciano Giordani Bassani <a class="moz-txt-link-rfc2396E" href="mailto:lgbassani@terra.com.br"><lgbassani@terra.com.br></a> wrote:
</pre>
<blockquote type="cite">
<pre wrap=""> Eu não costumo usar placeholders, pq em geral os meus SQLs são bastante
complexos e montados em tempo de execução, de acordo com o que o usuário
quer. Concordo que seria muito melhor usar, mas dependendo da aplicação dá
mais trabalho (e eu sou amante do pouco trabalho) fazer assim, e por isso
não uso.
Bom, na verdade o que eu gostaria de dizer é que já fiz dezenas de
simulações de SQL injection no Perl, e nunca consegui uma falha de
segurança, o que me leva a concluir que o Perl é imune a isso (mas não é
imune a problemas com aspas, que precisam serem tratadas antes, para não
causar erro na aplicação).
SDS,
Luciano
Luis Motta Campos escreveu:
On Jul 24, 2007, at 4:23 PM, <a class="moz-txt-link-rfc2396E" href="mailto:fernandolouis@terra.com.br"><fernandolouis@terra.com.br></a>
<a class="moz-txt-link-rfc2396E" href="mailto:fernandolouis@terra.com.br"><fernandolouis@terra.com.br></a> wrote:
Amigo, só não entendi pq devo usar eles... há alguma otimização ou
o que?
Você não quer poder incluir os valores que quiser na tabela?
Precisa proteger os valores, e a melhor forma de fazer isso é usando
placeholders. De outra forma, o SQL pode interpretar parte dos seus
dados como "query" (depende apenas do que você tem nos seus dados), e
fazer burrada, ou não funcionar (como é o teu caso).
<a class="moz-txt-link-freetext" href="http://en.wikipedia.org/wiki/SQL_injection">http://en.wikipedia.org/wiki/SQL_injection</a>
Isto pode ser educativo, também, e está 100% relacionado.
Claro, tudo isso são sugestões, você pode colocar o que quiser nos
seus programas, desde que não me culpe por eles não funcionarem como
você espera... ;-)
Putamplexos!
--
Luis Motta Campos (a.k.a. Monsieur Champs) is a software engineer,
Perl fanatic evangelist, and amateur {cook, photographer}
_______________________________________________
Cascavel-pm mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Cascavel-pm@pm.org">Cascavel-pm@pm.org</a>
<a class="moz-txt-link-freetext" href="http://mail.pm.org/mailman/listinfo/cascavel-pm">http://mail.pm.org/mailman/listinfo/cascavel-pm</a>
_______________________________________________
Cascavel-pm mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Cascavel-pm@pm.org">Cascavel-pm@pm.org</a>
<a class="moz-txt-link-freetext" href="http://mail.pm.org/mailman/listinfo/cascavel-pm">http://mail.pm.org/mailman/listinfo/cascavel-pm</a>
</pre>
</blockquote>
<pre wrap="">
--
Gabriel Vieira
_______________________________________________
Cascavel-pm mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Cascavel-pm@pm.org">Cascavel-pm@pm.org</a>
<a class="moz-txt-link-freetext" href="http://mail.pm.org/mailman/listinfo/cascavel-pm">http://mail.pm.org/mailman/listinfo/cascavel-pm</a>
</pre>
</blockquote>
<pre wrap=""><!---->
</pre>
</blockquote>
</body>
</html>