Evitando a SQL Injection

Olá galera, estou aqui agora para falar sobre um problema muito comum que acontece no mundo dos desenvolvedores, o sql injection. Que nada mais é do que o usuário inserir código malicioso(SQL) em um campo de seu site, software ou o que seja.
Por exemplo, se você faz em algum momento a determinada consulta:

User.find(:all, :conditions => "name = '#{params[:name]}'")

Isso possibilita o usuário a inserir um código malicioso através de sua consulta, ou seja, o usuário pode digitar no campo “name” o seguinte:

'; DELETE FROM PROJECTS; SELECT * from projects where '1'='1

Reultando em:

SELECT * FROM users WHERE name = ''; DELETE FROM USERS; SELECT * from users where '1'='1'

Vixxxx alguém deletou todos os dados da sua tabela de usuários. Mas calma, a solução para este
problema é bem simples, basta ao invés de passar toda a condição com uma string, passa-se um um
array ou um hash:

array:
User.find(:all, :conditions => ["name = ?", params[:name]])

hash:
User.find(:all, :conditions => {:name => params[:name]})

Pequenos detalhes como este são bem relevantes para nós desenvolvedores.

Até a próxima !

1 comentário a “Evitando a SQL Injection

Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão / Alterar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Terminar Sessão / Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão / Alterar )

Google+ photo

Está a comentar usando a sua conta Google+ Terminar Sessão / Alterar )

Connecting to %s