Безопасность в LINQ to SQL

При соединении с базой данных всегда присутствуют риски безопасности. Хотя в LINQ to SQL включены некоторые новые способы работы с данными в SQL Server, он не предоставляет никаких дополнительных механизмов безопасности.

Управление доступом и проверка подлинности

У LINQ to SQL нет своей модели пользователей или механизмов проверки подлинности. Применяйте SQL Server Security для управления доступом к сопоставленным с вашей моделью объектов базе данных, ее таблицам и представлениям, а также хранимым процедурам. Предоставляйте пользователям минимальный требуемый доступ и настаивайте на использовании для проверки подлинности надежных паролей.

Сопоставление и сведения о схеме

Сопоставление типа SQL-CLR и сведения о схеме базы данных в модели объектов, а также внешний файл сопоставления доступны всем, у кого есть доступ к этим файлам в файловой системе. Предполагается, что информация о схеме будет доступна всем, кто может получить доступ к модели объектов или внешнему файлу сопоставления. Для предотвращения распространения доступа к сведениям о схеме пользуйтесь механизмами безопасности файлов, чтобы защитить исходные файлы и файлы сопоставления.

Строки соединения

При любой возможности стремитесь избегать использования паролей в строках соединения. Строка соединения не только сама по себе представляет риск, но при использовании объектно-реляционного конструктора и средства командной строки SQLMetal она может попасть в раскрытом виде в модель объектов или внешний файл сопоставления. Любой обладатель доступа к модели объектов или внешнему файлу сопоставления через файловую систему сможет увидеть пароль соединения, если он будет включен в строку соединения.

Для минимизации подобных рисков применяйте встроенную безопасность для установления доверительного соединения с SQL Server. При таком подходе не требуется хранить пароль в строке соединения. Дополнительные сведения см. в разделе Безопасность SQL Server (ADO.NET).

При отсутствии встроенной безопасности в строке соединения потребуется открытый текст пароля. Ниже приведены лучшие способы обеспечения безопасности строки соединения в порядке возрастания риска.

  • Используйте встроенную безопасность.

  • Обезопасить строки соединения с помощью паролей и минимизировать пересылку строк соединения.

  • Применяйте класс System.Data.SqlClient.SqlConnection вместо строки соединения, поскольку он ограничивает длительность просмотра. В LINQ to SQL создать экземпляр класса System.Data.Linq.DataContext можно с помощью атрибута SqlConnection.

  • Минимизировать время существования и точек соприкосновения для всех строк соединения.

См. также

Основные понятия

Часто задаваемые вопросы (LINQ to SQL)

Другие ресурсы

Дополнительные сведения (LINQ to SQL)