utilizando o cmd.Parameters.AddWithValue - consigo bloquear invasão por sql injection?
18/09/2013
0
Alexandre Alves
Posts
18/09/2013
Joel Rodrigues
Além disso, uma boa prática é efetuar validações, inclusive usando RegEx.
18/09/2013
Fernanda Acacia
18/09/2013
Joel Rodrigues
19/09/2013
Thiago Jesus
Uma técnica válida é sempre utilizar Getters and Setters para acessar os dados da sua classe. Para operações SQL sempre utilize uma camada de acesso, por exemplo o padrão DAO.
Quando você trabalhar com Formulários Persistentes NUNCA realize operações SQL diretamente do formulário, pois se um TextBox estiver diretamente ligado a uma operação SQL é fácil de rodar SQL Injection, e isso não é apenas para .NET e sim para qualquer linguagem de programação.
Envie as informações do formulário para uma classe Model contendo Getters and Setters e a partir dai trabalhe com uma camada de acesso do tipo DAO.
Classe Model
Observação: Getters and Setters utilizando propriedades automáticas no C# é uma das coisas mais elegantes da linguagem
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Contatos { class LoginMODEL { public string Usuario { get; set; } public string Senha { get; set; } } }
Classe DAO.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Data.SqlClient; namespace Contatos { class LoginDAO { public Boolean Logar(LoginMODEL login) método público passar um objetos Model como parâmetro { Boolean resultado = false; SqlConnection conn = new SqlConnection(@"Server =(LocalDB)\v11.0;Database = banco; Integrated Security = SSPI;"); SqlCommand sql = new SqlCommand("Select * from Usuarios Where " + "Usuario = @usuario And Senha = @senha", conn); sql.Parameters.AddWithValue("@usuario", login.Usuario); // Primeiro parâmetro recebe o conteúdo de login.Usuario sql.Parameters.AddWithValue("@senha", login.Senha); // Segundo parâmetro recebe o conteúdo de login.Senha conn.Open(); SqlDataReader reader = sql.ExecuteReader(); while (reader.Read()) { resultado = true; } return resultado; } } }
Este é um exemplo bem simples.
A plataforma .NET é maravilhosa!
Clique aqui para fazer login e interagir na Comunidade :)