Usuário com melhor resposta
Classe dao com segunraça?

Pergunta
-
Bom dia,
A minha questão é a seguinte: estou criando um classe responsável pela interação com o Banco de Dados, insert, update etc.
Como garantir a segurança dos dados inseridos com essa classe?
Classe:
using System.Configuration;
using System.Data;
using Npgsql;
namespace Gerenciador_2013.Model
{
public class Contexto
{
public NpgsqlConnection conexao;
public Contexto()
{
conexao = new NpgsqlConnection(ConfigurationManager.ConnectionStrings["PostgreSQL"].ConnectionString);
conexao.Open();
}
// Executa um comando no banco de dados sem retorno. Exemplo: faz um insert, update ou delete no banco dados
public void Executa(string strQuery) {
NpgsqlCommand cmd = new NpgsqlCommand {
CommandText = strQuery,
CommandType = CommandType.Text,
Connection = conexao
};
cmd.ExecuteNonQuery();
}
// Esse método retorna valores feitos em consultas.
public NpgsqlDataReader Consulta(string strQuery) {
NpgsqlCommand cmd = new NpgsqlCommand(strQuery, conexao);
return cmd.ExecuteReader();
}
// Ao ser chamado se a conexão com o banco de dados estiver aberta ele a fecha.
public void Dispose() {
if (conexao.State == ConnectionState.Open)
conexao.Close();
}
}
}
....
string SQL = "INSERT INTO cidade (cidade) VALUES (@c)";
NpgsqlCommand cmd = new NpgsqlCommand(SQL, con.conexao);
cmd.Parameters.AddWithValue("@c", cidades.Cidade);
return cmd.ExecuteNonQuery();
con.Dispose();
...
Como posso garantir a segurança no primeiro caso?
Segurança: SQL injetct etc.Att,
Antonio Flavio
- Editado Flavio, Antonio terça-feira, 5 de novembro de 2013 02:15
Respostas
-
Então, não inconveniência é o correto! Quer segurança, quer conversão, quer manipulação correta então
faça um Dao para cada Tabela do seu banco e utiliza Design Patterns para que isso fico reaproveitável!
Eu fiz um vídeo se for do seu interesse: http://www.youtube.com/watch?v=N6NEo8zf60c
Ou
Trabalhe com camada de persistência (ORM) com uma camada de Repositório logo acima!!!
Fúlvio Cezar Canducci Dias- Marcado como Resposta Giovani Cr quarta-feira, 13 de novembro de 2013 14:43
Todas as Respostas
-
Você pode passar essas querys, para uma procedure no banco de dados e fazer a chamada da mesma no código C#.
Não tem nada a ver com o SQL Injection mas é uma boa prática que pode adotar.
Se a sugestão resolver o problema, favor marcar como Resposta.
-
-
Então, não inconveniência é o correto! Quer segurança, quer conversão, quer manipulação correta então
faça um Dao para cada Tabela do seu banco e utiliza Design Patterns para que isso fico reaproveitável!
Eu fiz um vídeo se for do seu interesse: http://www.youtube.com/watch?v=N6NEo8zf60c
Ou
Trabalhe com camada de persistência (ORM) com uma camada de Repositório logo acima!!!
Fúlvio Cezar Canducci Dias- Marcado como Resposta Giovani Cr quarta-feira, 13 de novembro de 2013 14:43