Поделиться через


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

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

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

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

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

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

Строки подключения

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

Чтобы свести к минимуму такие риски, используйте встроенную безопасность для обеспечения надежного подключения к SQL Server. При таком подходе не требуется хранить пароль в строке соединения. Дополнительные сведения см. в разделе "Безопасность SQL Server".

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

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

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

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

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

См. также