sql injection
24/11/2005
0
se minhas consultas são feitas apenas em campos do tipo string, isolados por aspas, tem algum perigo?
Grato!
Vitor Rubio
Posts
24/11/2005
Michael
SQL Injection só é problema se vc concatenar comandos SQL com strings vindas de algum componente ou controle que o usuário possa editar, como um Edit, por exemplo.
Se vc trata os dados antes de repassá-los ao banco, não há problema algum.
[]´s
24/11/2005
Massuda
var SQL: string; ... SQL := ´SELECT Count(*) FROM Users WHERE UserName="´ + EditUsername.Text + ´" AND Password="´ + EditPassword.Text + ´"´;
O problema de SQL injection acontece quando alguém informa este nome de usuário...
" or 1=1 --
SELECT Count(*) FROM Users WHERE UserName="" or 1=1 --" AND Password=""
Para evitar isso você pode analisar o que o usuário digitou nos edits (por exemplo, poderia aceitar apenas letras e números no edits) ou mudar seu teste para evitar o problema.
Mais exemplos no artigo (em inglês) que citei no início.
24/11/2005
Michael
[]´s
24/11/2005
Massuda
24/11/2005
Vitor Rubio
var SQL: string; ... SQL := ´SELECT Count(*) FROM Users WHERE UserName="´ + EditUsername.Text + ´" AND Password="´ + EditPassword.Text + ´"´;
eu usar a função quotedstr, asssim:
var SQL: string; ... SQL := ´SELECT Count(*) FROM Users WHERE UserName= quotedstr(EditUsername.Text) + ´ AND Password= ´ + quotedstr(EditPassword.Text);
se eu fizer desse jeito, eu evito a sql injection?
24/11/2005
Massuda
Clique aqui para fazer login e interagir na Comunidade :)