Zabezpieczenia w składniku LINQ to SQL
Zagrożenia bezpieczeństwa są zawsze obecne podczas nawiązywania połączenia z bazą danych. Mimo że LINQ to SQL może obejmować kilka nowych sposobów pracy z danymi w programie SQL Server, nie zapewnia żadnych dodatkowych mechanizmów zabezpieczeń.
Kontrola dostępu i uwierzytelnianie
LINQ to SQL nie ma własnego modelu użytkownika ani mechanizmów uwierzytelniania. Użyj zabezpieczeń programu SQL Server, aby kontrolować dostęp do bazy danych, tabel baz danych, widoków i procedur składowanych mapowanych na model obiektów. Udziel użytkownikom minimalnego wymaganego dostępu i wymaga silnego hasła do uwierzytelniania użytkownika.
Mapowanie i informacje o schemacie
Mapowanie typów SQL-CLR i informacje o schemacie bazy danych w modelu obiektów lub pliku mapowania zewnętrznego są dostępne dla wszystkich z dostępem do tych plików w systemie plików. Załóżmy, że informacje o schemacie będą dostępne dla wszystkich osób, które mogą uzyskać dostęp do modelu obiektów lub pliku mapowania zewnętrznego. Aby zapobiec szerszemu dostępowi do informacji o schemacie, użyj mechanizmów zabezpieczeń plików w celu zabezpieczenia plików źródłowych i plików mapowania.
Parametry połączenia
Korzystanie z haseł w parametry połączenia należy unikać zawsze, gdy jest to możliwe. Nie tylko jest parametry połączenia zagrożenie bezpieczeństwa samodzielnie, ale parametry połączenia można również dodać w postaci zwykłego tekstu do modelu obiektów lub pliku mapowania zewnętrznego podczas korzystania z narzędzia wiersza polecenia Object Relational Projektant lub SQLMetal. Każda osoba mająca dostęp do modelu obiektów lub pliku mapowania zewnętrznego za pośrednictwem systemu plików może zobaczyć hasło połączenia (jeśli znajduje się w parametry połączenia).
Aby zminimalizować takie zagrożenia, użyj zintegrowanych zabezpieczeń, aby nawiązać zaufane połączenie z programem SQL Server. Korzystając z tego podejścia, nie trzeba przechowywać hasła w parametry połączenia. Aby uzyskać więcej informacji, zobacz Zabezpieczenia programu SQL Server.
W przypadku braku zintegrowanych zabezpieczeń w parametry połączenia będzie potrzebne hasło w postaci zwykłego tekstu. Najlepszym sposobem na zabezpieczenie parametry połączenia w kolejności rosnącej ryzyka jest następująca:
Użyj zintegrowanych zabezpieczeń.
Zabezpieczanie parametry połączenia przy użyciu haseł i minimalizowanie przekazywania parametry połączenia.
System.Data.SqlClient.SqlConnection Należy użyć klasy zamiast parametry połączenia, ponieważ ogranicza czas trwania ekspozycji. Klasę LINQ to SQL System.Data.Linq.DataContext można utworzyć przy użyciu klasy SqlConnection.
Zminimalizuj okresy istnienia i punkty dotykowe dla wszystkich parametry połączenia.