Segurança em LINQ to SQL

Os riscos de segurança estão sempre presentes quando você se conecta a um banco de dados. Embora o LINQ to SQL possa incluir algumas novas maneiras de trabalhar com dados no SQL Server, ele não fornece nenhum mecanismo de segurança adicional.

Controlo de Acesso e Autenticação

O LINQ to SQL não tem seu próprio modelo de usuário ou mecanismos de autenticação. Use a Segurança do SQL Server para controlar o acesso ao banco de dados, tabelas de banco de dados, exibições e procedimentos armazenados mapeados para seu modelo de objeto. Conceda o acesso minimamente necessário aos usuários e exija senhas fortes para autenticação do usuário.

Informações de mapeamento e esquema

As informações de mapeamento de tipo SQL-CLR e esquema de banco de dados em seu modelo de objeto ou arquivo de mapeamento externo estão disponíveis para todos com acesso a esses arquivos no sistema de arquivos. Suponha que as informações do esquema estarão disponíveis para todos os que puderem acessar o modelo de objeto ou o arquivo de mapeamento externo. Para evitar um acesso mais generalizado às informações do esquema, use mecanismos de segurança de arquivos para proteger arquivos de origem e arquivos de mapeamento.

Cadeias de Ligação

O uso de senhas em cadeias de conexão deve ser evitado sempre que possível. Não apenas uma cadeia de conexão é um risco de segurança por si só, mas a cadeia de conexão também pode ser adicionada em texto não criptografado ao modelo de objeto ou arquivo de mapeamento externo ao usar a ferramenta de linha de comando Object Relational Designer ou SQLMetal. Qualquer pessoa com acesso ao modelo de objeto ou arquivo de mapeamento externo através do sistema de arquivos pode ver a senha de conexão (se ela estiver incluída na cadeia de conexão).

Para minimizar esses riscos, use a segurança integrada para fazer uma conexão confiável com o SQL Server. Usando essa abordagem, você não precisa armazenar uma senha na cadeia de conexão. Para obter mais informações, consulte Segurança do SQL Server.

Na ausência de segurança integrada, será necessária uma palavra-passe de texto não criptografado na cadeia de ligação. A melhor maneira de ajudar a proteger sua cadeia de conexão, em ordem crescente de risco, é a seguinte:

  • Utilize a segurança integrada.

  • Proteja as cadeias de conexão com senhas e minimize a passagem pelas cadeias de conexão.

  • Use uma System.Data.SqlClient.SqlConnection classe em vez de uma cadeia de conexão, pois ela limita a duração da exposição. A classe LINQ to SQL System.Data.Linq.DataContext pode ser instanciada usando um SqlConnectionarquivo .

  • Minimize a vida útil e os pontos de toque de todas as cadeias de conexão.

Consulte também