Udostępnij za pośrednictwem


Bezpieczny dostęp do danych

Aby napisać bezpieczny kod ADO.NET, musisz zrozumieć mechanizmy zabezpieczeń dostępne w bazowym magazynie danych lub bazie danych. Należy również wziąć pod uwagę wpływ na zabezpieczenia innych funkcji lub składników, które może zawierać aplikacja.

Uwierzytelnianie, autoryzacja i uprawnienia

Podczas nawiązywania połączenia z programem Microsoft SQL Server można użyć uwierzytelniania systemu Windows, znanego również jako zintegrowane zabezpieczenia, które używa tożsamości bieżącego aktywnego użytkownika systemu Windows, a nie przekazywania identyfikatora użytkownika i hasła. Korzystanie z uwierzytelniania systemu Windows jest zalecane w przypadku lokalnych baz danych, ponieważ poświadczenia użytkownika nie są widoczne w parametry połączenia. Jeśli nie możesz użyć uwierzytelniania systemu Windows do nawiązania połączenia z programem SQL Server, rozważ utworzenie parametry połączenia w czasie wykonywania przy użyciu polecenia SqlConnectionStringBuilder.

Ważne

Firma Microsoft zaleca korzystanie z najbezpieczniejszego dostępnego przepływu uwierzytelniania. Jeśli łączysz się z usługą Azure SQL, tożsamości zarządzane dla zasobów platformy Azure to zalecana metoda uwierzytelniania.

Poświadczenia używane do uwierzytelniania muszą być obsługiwane inaczej na podstawie typu aplikacji. Na przykład w aplikacji Windows Forms użytkownik może zostać poproszony o podanie informacji uwierzytelniania lub można użyć poświadczeń systemu Windows użytkownika. Jednak aplikacja internetowa często uzyskuje dostęp do danych przy użyciu poświadczeń dostarczonych przez samą aplikację, a nie przez użytkownika.

Po uwierzytelnieniu użytkowników zakres ich akcji zależy od uprawnień, które zostały im przyznane. Zawsze przestrzegaj zasady najniższych uprawnień i udzielaj tylko uprawnień, które są absolutnie niezbędne.

Więcej informacji zawierają poniższe zasoby.

Zasób opis
Ochrona informacji o połączeniu Opisuje najlepsze rozwiązania i techniki zabezpieczeń dotyczące ochrony informacji o połączeniu, takie jak używanie chronionej konfiguracji do szyfrowania parametry połączenia.
Konstruktorzy parametrów połączeń Opisuje sposób tworzenia parametry połączenia z danych wejściowych użytkownika w czasie wykonywania.
Zabezpieczenia aparatu bazy danych programu SQL Server i usługi Azure SQL Database Zawiera linki ułatwiające znajdowanie informacji o zabezpieczeniach i ochronie w a także w aucie bazy danych programu SQL Server i usłudze Azure SQL Database.

Polecenia sparametryzowane i wstrzyknięcie kodu SQL

Użycie sparametryzowanych poleceń pomaga chronić przed atakami polegającymi na wstrzyknięciu kodu SQL, w których osoba atakująca "wprowadza" polecenie do instrukcji SQL, która narusza zabezpieczenia na serwerze. Sparametryzowane polecenia chronią przed atakiem polegającym na wstrzyknięciu kodu SQL, zapewniając, że wartości odebrane ze źródła zewnętrznego są przekazywane tylko jako wartości, a nie część instrukcji Języka Transact-SQL. W związku z tym polecenia języka Transact-SQL wstawione do wartości nie są wykonywane w źródle danych. Zamiast tego są one oceniane wyłącznie jako wartość parametru. Oprócz korzyści zabezpieczeń sparametryzowane polecenia zapewniają wygodną metodę organizowania wartości przekazywanych za pomocą instrukcji Transact-SQL lub procedury składowanej.

Aby uzyskać więcej informacji na temat używania sparametryzowanych poleceń, zobacz następujące zasoby.

Zasób opis
Parametry elementu DataAdapter Opisuje sposób używania parametrów z elementem DataAdapter.
Modyfikowanie danych za pomocą procedur składowanych Opisuje sposób określania parametrów i uzyskiwania wartości zwracanej.
Procedury składowane (aparat bazy danych) Opisuje zalety korzystania z procedur składowanych i różnych typów procedur składowanych.

Sondowanie ataków

Osoby atakujące często używają informacji z wyjątku, takiego jak nazwa serwera, bazy danych lub tabeli, aby zainstalować atak na system. Ponieważ wyjątki mogą zawierać określone informacje o aplikacji lub źródle danych, możesz pomóc w lepszej ochronie aplikacji i źródła danych, ujawniając tylko istotne informacje klientowi.

Więcej informacji zawierają poniższe zasoby.

Zasób opis
Obsługa i zgłaszanie wyjątków na platformie .NET Opisuje podstawowe formy obsługi wyjątków try/catch/finally ustrukturyzowanych.
Najlepsze rozwiązania dotyczące wyjątków Opisuje najlepsze rozwiązania dotyczące obsługi wyjątków.

Ochrona źródeł danych programu Microsoft Access i Excel

Programy Microsoft Access i Microsoft Excel mogą działać jako magazyn danych dla aplikacji ADO.NET, gdy wymagania dotyczące zabezpieczeń są minimalne lub nieistnieją. Ich funkcje zabezpieczeń są skuteczne w celu odstraszania, ale nie należy polegać na tym, aby robić więcej niż zniechęcać do wtrącania się przez nieinformowanych użytkowników. Pliki danych fizycznych programu Access i Excel istnieją w systemie plików i muszą być dostępne dla wszystkich użytkowników. To sprawia, że są narażone na ataki, które mogą spowodować kradzież lub utratę danych, ponieważ pliki można łatwo skopiować lub zmienić. Jeśli wymagane jest niezawodne zabezpieczenia, należy użyć programu SQL Server lub innej bazy danych opartej na serwerze, w której pliki danych fizycznych nie są czytelne z systemu plików.

Usługi przedsiębiorstwa

Com+ zawiera własny model zabezpieczeń, który opiera się na kontach systemu Windows i personifikacji procesów/wątków. System.EnterpriseServices Przestrzeń nazw udostępnia otoki, które umożliwiają aplikacjom platformy .NET integrowanie kodu zarządzanego ServicedComponent z usługami zabezpieczeń COM+ za pomocą klasy .

Współdziałanie z niezarządzanymi kodami

Program .NET Framework zapewnia interakcję z kodem niezarządzanymi, w tym składnikami COM, usługami COM+, bibliotekami typów zewnętrznych i wieloma usługami systemu operacyjnego. Praca z niezarządzanymi kodami obejmuje przejście poza obwód zabezpieczeń dla kodu zarządzanego. Zarówno kod, jak i dowolny kod, który wywołuje go, musi mieć uprawnienie niezarządzanego kodu (SecurityPermission z określoną flagą UnmanagedCode ). Niezarządzany kod może wprowadzać niezamierzone luki w zabezpieczeniach w aplikacji. Dlatego należy unikać współdziałania z niezarządzanymi kodami, chyba że jest to absolutnie konieczne.

Aby uzyskać więcej informacji, zobacz Interoperating with Unmanaged Code (Współdziałanie z niezarządzanymi kodami).

Zobacz też