Compartilhar via


Segurança no 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 mecanismos de segurança adicionais.

Controle 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 o modelo de objeto. Conceda o acesso mínimo necessário aos usuários e exija senhas fortes para autenticação do usuário.

Informações de mapeamento e esquema

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

Cadeias de Conexão

O uso de senhas em cadeias de conexão deve ser evitado sempre que possível. Não só 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 claro ao modelo de objeto ou arquivo de mapeamento externo ao usar o Designer Relacional de Objeto ou a ferramenta de linha de comando SQLMetal. Qualquer pessoa com acesso ao modelo de objeto ou arquivo de mapeamento externo por meio do sistema de arquivos poderá 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 SQL Server Security.

Na ausência de segurança integrada, uma senha de texto claro será necessária na cadeia de conexão. A melhor maneira de ajudar a proteger sua cadeia de conexão, aumentando a ordem de risco, é a seguinte:

  • Use segurança integrada.

  • Proteja cadeias de conexão com senhas e reduza o compartilhamento de 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 uma SqlConnection.

  • Minimize o tempo de vida e toque em pontos para todas as cadeias de conexão.

Consulte também