Omówienie zabezpieczeń

Zabezpieczanie aplikacji jest trwającym procesem. Nigdy nie będzie punktu, w którym deweloper może zagwarantować, że aplikacja jest bezpieczna przed wszystkimi atakami, ponieważ nie można przewidzieć, jakie rodzaje przyszłych ataków przyniesie nowe technologie. Z drugiej strony, tylko dlatego, że nikt jeszcze nie odkrył (lub opublikowanych) wad zabezpieczeń w systemie nie oznacza, że żaden nie istnieje lub może istnieć. Należy zaplanować zabezpieczenia w fazie projektowania projektu, a także zaplanować zachowanie zabezpieczeń przez cały okres istnienia aplikacji.

Projektowanie pod kątem zabezpieczeń

Jednym z największych problemów z tworzeniem bezpiecznych aplikacji jest to, że zabezpieczenia są często następstwem implementacji po zakończeniu projektu. Nieumyślne tworzenie zabezpieczeń w aplikacji na początku prowadzi do niezabezpieczonych aplikacji, ponieważ niewiele uważano za to, co sprawia, że aplikacja jest bezpieczna.

Implementacja zabezpieczeń w ostatniej chwili prowadzi do większej liczby usterek, ponieważ oprogramowanie przerywa nowe ograniczenia lub musi zostać przepisane w celu dostosowania do nieprzewidzianej funkcjonalności. Każdy wiersz poprawionego kodu zawiera możliwość wprowadzenia nowej usterki. Z tego powodu należy wziąć pod uwagę zabezpieczenia na wczesnym etapie procesu programowania, aby móc kontynuować współpracę z opracowywaniem nowych funkcji.

Modelowanie zagrożeń

Nie można chronić systemu przed atakiem, chyba że rozumiesz wszystkie potencjalne ataki, na które jest narażony. Proces oceny zagrożeń bezpieczeństwa nazywany modelowaniem zagrożeń jest niezbędny do określenia prawdopodobieństwa i konsekwencji naruszeń zabezpieczeń w aplikacji ADO.NET.

Modelowanie zagrożeń składa się z trzech kroków wysokiego poziomu: zrozumienia widoku przeciwnika, scharakteryzowania bezpieczeństwa systemu i określania zagrożeń.

Modelowanie zagrożeń to iteracyjne podejście do oceny luk w zabezpieczeniach w aplikacji w celu znalezienia tych, które są najbardziej niebezpieczne, ponieważ uwidaczniają najbardziej poufne dane. Po zidentyfikowaniu luk w zabezpieczeniach należy je sklasyfikować w kolejności ważności i utworzyć priorytetowy zestaw środków zaradczych w celu przeciwdziałania zagrożeniom.

Aby uzyskać więcej informacji, zobacz następujące zasoby:

Zasób opis
Witryna modelowania zagrożeń w portalu inżynierii zabezpieczeń Zasoby na tej stronie pomogą Ci zrozumieć proces modelowania zagrożeń i tworzyć modele zagrożeń, których można użyć do zabezpieczania własnych aplikacji

Zasada najniższych uprawnień

Podczas projektowania, kompilowanie i wdrażanie aplikacji należy założyć, że aplikacja zostanie zaatakowana. Często te ataki pochodzą ze złośliwego kodu, który jest wykonywany z uprawnieniami użytkownika uruchamiającego kod. Inne osoby mogą pochodzić z dobrze zamierzonego kodu, który został wykorzystany przez osobę atakującą. Podczas planowania zabezpieczeń zawsze zakłada się, że wystąpi najgorszy scenariusz.

Jedną z miar przeciwmierznych, które można zastosować, jest próba wznoszenia jak największej liczby ścian wokół kodu, uruchamiając z najmniejszymi uprawnieniami. Zasada najniższych uprawnień mówi, że każde uprawnienie powinno zostać przyznane najmniejszej ilości kodu niezbędnego przez najkrótszy czas wymagany do wykonania zadania.

Najlepszym rozwiązaniem w przypadku tworzenia bezpiecznych aplikacji jest rozpoczęcie od braku uprawnień, a następnie dodanie najwęższych uprawnień dla wykonywanego zadania. Z drugiej strony, począwszy od wszystkich uprawnień, a następnie odmawianie poszczególnych prowadzi do niezabezpieczonych aplikacji, które są trudne do przetestowania i utrzymania, ponieważ luki zabezpieczeń mogą istnieć z niezamierzonego udzielania większej liczby uprawnień niż wymagane.

Aby uzyskać więcej informacji na temat zabezpieczania aplikacji, zobacz następujące zasoby:

Zasób opis
Zabezpieczanie aplikacji Zawiera linki do ogólnych tematów dotyczących zabezpieczeń. Zawiera również linki do tematów dotyczących zabezpieczania aplikacji rozproszonych, aplikacji internetowych, aplikacji mobilnych i aplikacji klasycznych.

Zabezpieczenia dostępu kodu (CAS)

Zabezpieczenia dostępu kodu (CAS) to mechanizm, który pomaga ograniczyć dostęp do chronionych zasobów i operacji. W programie .NET Framework system CAS wykonuje następujące funkcje:

  • Definiuje uprawnienia i zestawy uprawnień reprezentujące prawo dostępu do różnych zasobów systemowych.

  • Umożliwia administratorom konfigurowanie zasad zabezpieczeń przez kojarzenie zestawów uprawnień z grupami kodu (grupami kodu).

  • Umożliwia kodowi żądanie uprawnień wymaganych do uruchomienia, a także uprawnień, które byłyby przydatne, i określa uprawnienia, których kod nigdy nie musi mieć.

  • Przyznaje uprawnienia do każdego załadowanego zestawu na podstawie uprawnień żądanych przez kod i operacji dozwolonych przez zasady zabezpieczeń.

  • Umożliwia kodowi żądanie, że jego obiekty wywołujące mają określone uprawnienia.

  • Umożliwia kodowi żądanie, aby jego osoby wywołujące posiadały podpis cyfrowy, dzięki czemu tylko osoby wywołujące z określonej organizacji lub witryny mogą wywoływać chroniony kod.

  • Wymusza ograniczenia dotyczące kodu w czasie wykonywania, porównując przyznane uprawnienia każdego obiektu wywołującego w stosie wywołań do uprawnień, które muszą mieć osoby wywołujące.

Aby zminimalizować ilość szkód, które mogą wystąpić w przypadku pomyślnego ataku, wybierz kontekst zabezpieczeń dla kodu, który udziela dostępu tylko do zasobów, które musi wykonać, i nie więcej.

Aby uzyskać więcej informacji, zobacz następujące zasoby:

Zasób opis
Zabezpieczenia dostępu kodu i ADO.NET Opisuje interakcje między zabezpieczeniami dostępu kodu, zabezpieczeniami opartymi na rolach i częściowo zaufanymi środowiskami z perspektywy aplikacji ADO.NET.
Zabezpieczenia dostępu kodu Zawiera linki do dodatkowych tematów opisujących usługę CAS w programie .NET Framework.

Zabezpieczenia bazy danych

Zasada najniższych uprawnień dotyczy również źródła danych. Oto niektóre ogólne wytyczne dotyczące zabezpieczeń bazy danych:

  • Utwórz konta z najniższymi możliwymi uprawnieniami.

  • Nie zezwalaj użytkownikom na dostęp do kont administracyjnych tylko po to, aby kod działał.

  • Nie zwracaj komunikatów o błędach po stronie serwera do aplikacji klienckich.

  • Zweryfikuj wszystkie dane wejściowe zarówno klienta, jak i serwera.

  • Użyj sparametryzowanych poleceń i unikaj dynamicznych instrukcji SQL.

  • Włącz inspekcję zabezpieczeń i rejestrowanie dla używanej bazy danych, aby otrzymywać alerty o wszelkich naruszeniach zabezpieczeń.

Aby uzyskać więcej informacji, zobacz następujące zasoby:

Zasób opis
Zabezpieczenia serwera SQL Zawiera omówienie zabezpieczeń programu SQL Server ze scenariuszami aplikacji, które zawierają wskazówki dotyczące tworzenia bezpiecznych aplikacji ADO.NET przeznaczonych dla programu SQL Server.
Rekomendacje strategii dostępu do danych Zawiera zalecenia dotyczące uzyskiwania dostępu do danych i wykonywania operacji bazy danych.

Zasady zabezpieczeń i Administracja istration

Niewłaściwie administrowanie zasadami zabezpieczeń dostępu do kodu (CAS) może potencjalnie powodować słabe punkty zabezpieczeń. Po wdrożeniu aplikacji techniki monitorowania zabezpieczeń powinny być używane i zagrożenia oceniane w miarę pojawiania się nowych zagrożeń.

Aby uzyskać więcej informacji, zobacz następujące zasoby:

Zasób opis
Zarządzanie zasadami zabezpieczeń Zawiera informacje na temat tworzenia i administrowania zasadami zabezpieczeń.
Najlepsze rozwiązania dotyczące zasad zabezpieczeń Zawiera linki opisujące sposób administrowania zasadami zabezpieczeń.

Zobacz też