Udostępnij za pośrednictwem


Rama zabezpieczeń: dane poufne | Środki zaradcze

Produkt/usługa Artykuł
Granica zaufania maszyny
Aplikacja internetowa
Baza danych
Web API
Azure Document DB
Granica zaufania maszyn wirtualnych IaaS platformy Azure
Granica zaufania usługi Service Fabric
Dynamics CRM
Azure Storage
Klient mobilny
WCF

Upewnij się, że pliki binarne są zaciemnione, jeśli zawierają poufne informacje

Tytuł Szczegóły
Składnik Granica zaufania maszyny
Faza SDL Wdrożenie
Odpowiednie technologie Ogólna
Atrybuty Nie dotyczy
Dokumentacja Nie dotyczy
Kroki Upewnij się, że pliki binarne są zaciemnione, jeśli zawierają poufne informacje, takie jak tajemnice handlowe, wrażliwą logikę biznesową, która nie powinna zostać odwrócona. Ma to na celu zatrzymanie odwrotnej inżynierii zestawów. Narzędzia takie jak CryptoObfuscator mogą być używane w tym celu.

Rozważ użycie szyfrowanego systemu plików (EFS) w celu ochrony poufnych danych specyficznych dla użytkownika

Tytuł Szczegóły
Składnik Granica zaufania maszyny
Faza SDL Budowa
Odpowiednie technologie Generyczny
Atrybuty Nie dotyczy
Dokumentacja Nie dotyczy
Kroki Rozważ użycie szyfrowanego systemu plików (EFS) w celu ochrony poufnych danych specyficznych dla użytkownika przed przeciwnikami z fizycznym dostępem do komputera.

Upewnij się, że poufne dane przechowywane przez aplikację w systemie plików są szyfrowane

Tytuł Szczegóły
Składnik Granica zaufania maszyny
Faza SDL Wdrożenie
Odpowiednie technologie Ogólna
Atrybuty Nie dotyczy
Dokumentacja Nie dotyczy
Kroki Upewnij się, że poufne dane przechowywane przez aplikację w systemie plików są zaszyfrowane (np. przy użyciu DPAPI), jeśli nie można wymusić zastosowania EFS.

Upewnij się, że zawartość wrażliwa nie jest buforowana w przeglądarce

Tytuł Szczegóły
Składnik Aplikacja internetowa
Faza SDL Budowa
Odpowiednie technologie Generic, Web Forms, MVC5, MVC6
Atrybuty Nie dotyczy
Dokumentacja Nie dotyczy
Kroki Przeglądarki mogą przechowywać informacje na potrzeby buforowania i historii. Te buforowane pliki są przechowywane w folderze, na przykład w folderze Tymczasowe pliki internetowe w przypadku programu Internet Explorer. Po ponownym odwołyniu się do tych stron przeglądarka wyświetla je z pamięci podręcznej. Jeśli informacje poufne są wyświetlane użytkownikowi (takie jak jego adres, szczegóły karty kredytowej, numer ubezpieczenia społecznego lub nazwa użytkownika), te informacje mogą być przechowywane w pamięci podręcznej przeglądarki, a w związku z tym można je pobrać, sprawdzając pamięć podręczną przeglądarki lub po prostu naciskając przycisk "Wstecz". Ustaw wartość nagłówka odpowiedzi kontroli pamięci podręcznej na wartość "no-store" dla wszystkich stron.

Przykład

<configuration>
  <system.webServer>
   <httpProtocol>
    <customHeaders>
        <add name="Cache-Control" value="no-store" />
        <add name="Pragma" value="no-cache" />
        <add name="Expires" value="-1" />
    </customHeaders>
  </httpProtocol>
 </system.webServer>
</configuration>

Przykład

Można to zaimplementować za pomocą filtru. Można użyć następującego przykładu:

public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            if (filterContext == null || (filterContext.HttpContext != null && filterContext.HttpContext.Response != null && filterContext.HttpContext.Response.IsRequestBeingRedirected))
            {
                //// Since this is MVC pipeline, this should never be null.
                return;
            }

            var attributes = filterContext.ActionDescriptor.GetCustomAttributes(typeof(System.Web.Mvc.OutputCacheAttribute), false);
            if (attributes == null || **Attributes**.Count() == 0)
            {
                filterContext.HttpContext.Response.Cache.SetNoStore();
                filterContext.HttpContext.Response.Cache.SetCacheability(HttpCacheability.NoCache);
                filterContext.HttpContext.Response.Cache.SetExpires(DateTime.UtcNow.AddHours(-1));
                if (!filterContext.IsChildAction)
                {
                    filterContext.HttpContext.Response.AppendHeader("Pragma", "no-cache");
                }
            }

            base.OnActionExecuting(filterContext);
        }

Szyfrowanie sekcji plików konfiguracji aplikacji internetowej zawierających poufne dane

Tytuł Szczegóły
Składnik Aplikacja internetowa
Faza SDL Budowa
Zastosowane technologie Ogólna
Atrybuty Nie dotyczy
Dokumentacja Instrukcje: szyfrowanie sekcji konfiguracji w programie ASP.NET 2.0 przy użyciu interfejsu DPAPI, Określanie chronionego dostawcy konfiguracji, użycie usługi Azure Key Vault do ochrony wpisów tajnych aplikacji
Kroki Pliki konfiguracji, takie jak Web.config, appsettings.json są często używane do przechowywania poufnych informacji, w tym nazw użytkowników, haseł, parametry połączenia bazy danych i kluczy szyfrowania. Jeśli te informacje nie są chronione, aplikacja jest podatna na ataki lub złośliwych użytkowników uzyskujących poufne informacje, takie jak nazwy użytkowników konta i hasła, nazwy baz danych i nazwy serwerów. Na podstawie typu wdrożenia (azure/on-prem) szyfruj poufne sekcje plików konfiguracji przy użyciu interfejsu DPAPI lub usług, takich jak Azure Key Vault.

Wyraźnie wyłącz atrybut HTML autouzupełniania w poufnych formularzach i polach wejściowych

Tytuł Szczegóły
Składnik Aplikacja internetowa
Faza SDL Budowa
Aplikowalne technologie Ogólny
Atrybuty Nie dotyczy
Dokumentacja MSDN: atrybut autouzupełniania, Używanie autouzupełniania w HTML, Luka w zabezpieczeniach dotycząca oczyszczania HTML, Autouzupełnianie, ponownie?!
Kroki Atrybut autouzupełniania określa, czy formularz powinien mieć autouzupełnianie włączone, czy wyłączone. Gdy funkcja autouzupełniania jest włączona, przeglądarka automatycznie wypełnia wartości na podstawie wartości, które użytkownik wprowadził wcześniej. Na przykład, gdy w formularzu wprowadzane jest nowe hasło i nowa nazwa i po jego przesłaniu, przeglądarka pyta, czy hasło powinno zostać zapisane. Po wyświetleniu formularza nazwa i hasło są wypełniane automatycznie lub są wypełniane w miarę wprowadzania nazwy. Osoba atakująca z dostępem lokalnym może uzyskać hasło w postaci zwykłego tekstu z pamięci podręcznej przeglądarki. Domyślnie funkcja autouzupełniania jest włączona i musi być jawnie wyłączona.

Przykład

<form action="Login.aspx" method="post " autocomplete="off" >
      Social Security Number: <input type="text" name="ssn" />
      <input type="submit" value="Submit" />    
</form>

Upewnij się, że dane poufne wyświetlane na ekranie użytkownika są maskowane

Tytuł Szczegóły
Składnik Aplikacja internetowa
Faza SDL Budowa
Stosowane technologie Ogólny
Atrybuty Nie dotyczy
Dokumentacja Nie dotyczy
Kroki Dane poufne, takie jak hasła, numery kart kredytowych, numer SSN itp., powinny być maskowane po wyświetleniu na ekranie. Ma to na celu uniemożliwienie nieautoryzowanemu personelowi dostępu do danych (np. hasła do surfowania po ramieniu, personel pomocy technicznej wyświetlający numery użytkowników SSN). Upewnij się, że te elementy danych nie są widoczne w postaci zwykłego tekstu i są odpowiednio maskowane. Należy zachować ostrożność podczas akceptowania ich jako danych wejściowych (np. type="password"), a także wyświetlania z powrotem na ekranie (np. wyświetlać tylko 4 ostatnie cyfry numeru karty kredytowej).

Implementowanie dynamicznego maskowania danych w celu ograniczenia nieuprzywilejowanych użytkowników narażonych na poufne dane

Tytuł Szczegóły
Składnik baza danych
Faza SDL Budować
Zastosowane technologie Sql Azure, OnPrem
Atrybuty Wersja SQL — wersja 12, wersja SQL — MsSQL2016
Dokumentacja Dynamiczne maskowanie danych
Kroki Celem dynamicznego maskowania danych jest ograniczenie ujawnienia poufnych danych, co uniemożliwia użytkownikom, którzy nie powinni mieć dostępu do danych. Dynamiczne maskowanie danych nie ma na celu uniemożliwienia użytkownikom bazy danych bezpośredniego łączenia się z bazą danych i uruchamiania wyczerpujących zapytań, które uwidaczniają fragmenty poufnych danych. Dynamiczne maskowanie danych stanowi uzupełnienie innych funkcji zabezpieczeń programu SQL Server (inspekcja, szyfrowanie, zabezpieczenia na poziomie wiersza...) i zdecydowanie zaleca się używanie tej funkcji w połączeniu z nimi, aby lepiej chronić poufne dane w bazie danych. Należy pamiętać, że ta funkcja jest obsługiwana tylko przez program SQL Server, począwszy od wersji 2016 i usługi Azure SQL Database.

Upewnij się, że hasła są przechowywane w formacie skrótu solnego

Tytuł Szczegóły
Składnik baza danych
Faza SDL Budowa
Odpowiednie technologie Ogólna
Atrybuty Nie dotyczy
Dokumentacja Haszowanie haseł z użyciem interfejsów API kryptograficznych platformy .NET
Kroki Hasła nie powinny być przechowywane w niestandardowych bazach danych użytkowników. Zamiast tego skróty haseł powinny być przechowywane z wartościami soli. Przed zapisaniem hasła upewnij się, że sól dla użytkownika jest zawsze jedyna w swoim rodzaju, a także stosujesz b-crypt, s-crypt lub PBKDF2, z minimalną liczbą iteracji stopnia trudności pracy wynoszącą 150 000 pętli, aby wyeliminować możliwość ataków metodą siłową.

Upewnij się, że poufne dane w kolumnach bazy danych są szyfrowane

Tytuł Szczegóły
Składnik baza danych
Faza SDL Budowa
Odpowiednie technologie Ogólna
Atrybuty Wersja SQL — Wszystkie
Dokumentacja Szyfrowanie poufnych danych na serwerze SQL, Instrukcje: Szyfrowanie kolumny danych w programie SQL Server, Szyfrowanie według certyfikatu
Kroki Dane poufne, takie jak numery kart kredytowych, muszą być szyfrowane w bazie danych. Dane mogą być szyfrowane przy użyciu szyfrowania na poziomie kolumny lub funkcji aplikacji przy użyciu funkcji szyfrowania.

Upewnij się, że włączono szyfrowanie na poziomie bazy danych (TDE)

Tytuł Szczegóły
Składnik baza danych
Faza SDL Budowa
Odpowiednie technologie Ogólny
Atrybuty Nie dotyczy
Dokumentacja Opis funkcji Transparent Data Encryption (TDE) programu SQL Server
Kroki Funkcja Transparent Data Encryption (TDE) w programie SQL Server ułatwia szyfrowanie poufnych danych w bazie danych i ochronę kluczy używanych do szyfrowania danych przy użyciu certyfikatu. Zapobiega to używaniu danych przez nikogo, kto nie ma kluczy. Funkcja TDE chroni dane "w spoczynku", co oznacza pliki danych i dzienników. Zapewnia możliwość przestrzegania wielu przepisów, przepisów i wytycznych ustanowionych w różnych branżach.

Upewnij się, że kopie zapasowe bazy danych są szyfrowane

Tytuł Szczegóły
Składnik baza danych
Faza SDL Budowa
Odpowiednie technologie SQL Azure, On-Prem
Atrybuty Wersja SQL — wersja 12, wersja SQL — MsSQL2014
Dokumentacja Szyfrowanie kopii zapasowych bazy danych SQL
Kroki Program SQL Server ma możliwość szyfrowania danych podczas tworzenia kopii zapasowej. Określając algorytm szyfrowania i szyfrujący (certyfikat lub klucz asymetryczny) podczas tworzenia kopii zapasowej, można utworzyć zaszyfrowany plik kopii zapasowej.

Upewnij się, że poufne dane istotne dla webowego interfejsu API nie są przechowywane w pamięci przeglądarki.

Tytuł Szczegóły
Składnik Web API
Faza SDL Budowa
Odpowiednie technologie MVC 5, MVC 6
Atrybuty Dostawca tożsamości — ADFS, Dostawca tożsamości — Microsoft Entra ID
Dokumentacja Nie dotyczy
Kroki

W niektórych implementacjach wrażliwe dane istotne dla uwierzytelniania Web API są przechowywane w magazynie lokalnym przeglądarki. Np. artefakty uwierzytelniania Microsoft Entra, takie jak adal.idtoken, adal.nonce.idtoken, adal.access.token.key, adal.token.keys, adal.state.login, adal.session.state, adal.expiration.key itp.

Wszystkie te artefakty są dostępne nawet po zamknięciu wylogowania lub przeglądarki. Jeśli przeciwnik uzyskuje dostęp do tych artefaktów, może użyć ich ponownie w celu uzyskania dostępu do chronionych zasobów (API). Upewnij się, że wszystkie poufne artefakty związane z internetowym interfejsem API nie są przechowywane w pamięci przeglądarki. W przypadkach, gdy magazyn po stronie klienta jest nieunikniony (np. aplikacje jednostronicowe (SPA), które korzystają z niejawnych przepływów OpenIdConnect/OAuth, muszą przechowywać tokeny dostępu lokalnie), użyj opcji magazynu z nie ma trwałości. np. preferuj sesjęStorage do elementu LocalStorage.

Przykład

Poniższy fragment kodu JavaScript pochodzi z niestandardowej biblioteki uwierzytelniania, która przechowuje artefakty uwierzytelniania w magazynie lokalnym. Takie implementacje należy unikać.

ns.AuthHelper.Authenticate = function () {
window.config = {
instance: 'https://login.microsoftonline.com/',
tenant: ns.Configurations.Tenant,
clientId: ns.Configurations.AADApplicationClientID,
postLogoutRedirectUri: window.location.origin,
cacheLocation: 'localStorage', // enable this for Internet Explorer, as sessionStorage does not work for localhost.
};

Szyfrowanie poufnych danych przechowywanych w usłudze Azure Cosmos DB

Tytuł Szczegóły
Składnik Azure Document DB
Faza SDL Kompilacja
Stosowane technologie Ogólna
Atrybuty Nie dotyczy
Dokumentacja Nie dotyczy
Kroki Szyfrowanie poufnych danych na poziomie aplikacji przed zapisaniem w bazie danych dokumentów lub przechowywaniem poufnych danych w innych rozwiązaniach magazynu, takich jak Azure Storage lub Azure SQL

Szyfrowanie dysków używanych przez maszyny wirtualne przy użyciu usługi Azure Disk Encryption

Tytuł Szczegóły
Składnik Granica zaufania maszyn wirtualnych IaaS platformy Azure
Faza SDL Wdrożenie
Zastosowane technologie Ogólna
Atrybuty Nie dotyczy
Dokumentacja Szyfrowanie dysków używanych przez maszyny wirtualne przy użyciu usługi Azure Disk Encryption
Kroki

Usługa Azure Disk Encryption to nowa funkcja, która jest obecnie dostępna w wersji zapoznawczej. Ta funkcja umożliwia szyfrowanie dysków systemu operacyjnego i dysków danych używanych przez maszynę wirtualną IaaS. W przypadku systemu Windows dyski są szyfrowane przy użyciu technologii szyfrowania standardowej w branży BitLocker. W przypadku systemu Linux dyski są szyfrowane przy użyciu technologii DM-Crypt. Jest to zintegrowane z usługą Azure Key Vault, aby umożliwić kontrolowanie kluczy szyfrowania dysków i zarządzanie nimi. Rozwiązanie Azure Disk Encryption obsługuje następujące trzy scenariusze szyfrowania klienta:

  • Włącz szyfrowanie na nowych maszynach wirtualnych IaaS utworzonych na podstawie plików VHD zaszyfrowanych przez klienta i kluczy szyfrowania dostarczonych przez klienta, które są przechowywane w usłudze Azure Key Vault.
  • Włącz szyfrowanie na nowych maszynach wirtualnych IaaS utworzonych w witrynie Azure Marketplace.
  • Włącz szyfrowanie na istniejących maszynach wirtualnych IaaS już uruchomionych na platformie Azure.

Szyfrowanie wpisów tajnych w aplikacjach usługi Service Fabric

Tytuł Szczegóły
Składnik Granica zaufania usługi Service Fabric
Faza SDL Kompilacja
Stosowane technologie Ogólna
Atrybuty Środowisko — Azure
Dokumentacja Zarządzanie tajemnicami w aplikacjach Service Fabric
Kroki Sekrety to każda poufna informacja, taka jak parametry połączenia magazynu, hasła lub inne wartości, które nie powinny być obsługiwane w postaci zwykłego tekstu. Usługa Azure Key Vault umożliwia zarządzanie kluczami i tajnymi danymi w aplikacjach Service Fabric.

Wykonywanie modelowania zabezpieczeń i używanie jednostek biznesowych/zespołów, jeśli jest to wymagane

Tytuł Szczegóły
Składnik Dynamics CRM
Faza SDL Budowa
Odpowiednie technologie Ogólna
Atrybuty Nie dotyczy
Dokumentacja Nie dotyczy
Kroki Wykonywanie modelowania zabezpieczeń i używanie jednostek biznesowych/zespołów, jeśli jest to wymagane

Minimalizowanie dostępu do funkcji udostępniania w jednostkach krytycznych

Tytuł Szczegóły
Składnik Dynamics CRM
Faza SDL Wdrożenie
Odpowiednie technologie Ogólny
Atrybuty Nie dotyczy
Dokumentacja Nie dotyczy
Kroki Minimalizowanie dostępu do funkcji udostępniania w jednostkach krytycznych

Szkolenie użytkowników na temat czynników ryzyka związanych z funkcją dynamics CRM Share i dobrymi rozwiązaniami w zakresie zabezpieczeń

Tytuł Szczegóły
Składnik Dynamics CRM
Faza SDL Wdrożenie
Zastosowalne technologie Ogólna
Atrybuty Nie dotyczy
Dokumentacja Nie dotyczy
Kroki Szkolenie użytkowników na temat czynników ryzyka związanych z funkcją dynamics CRM Share i dobrymi rozwiązaniami w zakresie zabezpieczeń

Uwzględnij regułę standardów programowania, która pokazuje szczegóły konfiguracji w zarządzaniu wyjątkami

Tytuł Szczegóły
Składnik Dynamics CRM
Faza SDL Wdrożenie
Stosowane technologie Ogólna
Atrybuty Nie dotyczy
Dokumentacja Nie dotyczy
Kroki Dołącz regułę standardów programowania, która pokazuje szczegóły konfiguracji w zarządzaniu wyjątkami poza programowaniem. Przetestuj tę funkcję w ramach przeglądów kodu lub okresowej inspekcji.

Używanie szyfrowania usługi Azure Storage (SSE) dla danych magazynowanych (wersja zapoznawcza)

Tytuł Szczegóły
Składnik Azure Storage
Faza SDL Kompilacja
Stosowane technologie Ogólny
Atrybuty StorageType - BLOB
Dokumentacja Szyfrowanie usługi Azure Storage dla danych magazynowanych (wersja zapoznawcza)
Kroki

Szyfrowanie danych w usłudze Azure Storage (SSE) dla danych w stanie spoczynku pomaga chronić i zabezpieczać dane, aby spełniać zobowiązania organizacji dotyczące bezpieczeństwa i zgodności. Przy użyciu tej funkcji usługa Azure Storage automatycznie szyfruje dane przed trwałym wprowadzeniem ich do magazynu i odszyfrowuje je przed pobraniem. Szyfrowanie, odszyfrowywanie i zarządzanie kluczami są całkowicie przezroczyste dla użytkowników. Funkcja szyfrowania SSE ma zastosowanie tylko do blobów blokowych, blobów stronicowych i blobów dołączanych. Inne typy danych, w tym tabele, kolejki i pliki, nie będą szyfrowane.

Przepływ pracy szyfrowania i odszyfrowywania:

  • Klient włącza szyfrowanie na koncie magazynowym
  • Gdy klient zapisuje nowe dane (PUT Blob, PUT Block, PUT Page itp.) do usługi Blob Storage; każdy zapis jest szyfrowany przy użyciu 256-bitowego szyfrowania AES, jednego z najsilniejszych dostępnych szyfrów blokowych
  • Gdy klient musi uzyskać dostęp do danych (GET Blob itp.), dane są automatycznie odszyfrowywane przed powrotem do użytkownika
  • Jeśli szyfrowanie jest wyłączone, nowe zapisy nie są już szyfrowane, a istniejące zaszyfrowane dane pozostają zaszyfrowane do czasu ponownego zapisania przez użytkownika. Gdy szyfrowanie jest włączone, zapisy w usłudze Blob Storage będą szyfrowane. Stan danych nie zmienia się, gdy użytkownik przełącza się między włączaniem a wyłączaniem szyfrowania na koncie magazynu.
  • Wszystkie klucze szyfrowania są przechowywane, szyfrowane i zarządzane przez firmę Microsoft

Należy pamiętać, że w tej chwili klucze używane do szyfrowania są zarządzane przez firmę Microsoft. Firma Microsoft generuje klucze pierwotnie i zarządza bezpiecznym magazynem kluczy, a także regularną rotacją zdefiniowaną przez wewnętrzne zasady firmy Microsoft. W przyszłości klienci będą mogli zarządzać własnymi kluczami szyfrowania i udostępniać ścieżkę migracji z kluczy zarządzanych przez firmę Microsoft do kluczy zarządzanych przez klienta.

Używanie szyfrowania po stronie klienta do przechowywania poufnych danych w usłudze Azure Storage

Tytuł Szczegóły
Składnik Azure Storage
Faza SDL Budowa
Odpowiednie technologie Ogólna
Atrybuty Nie dotyczy
Dokumentacja Szyfrowanie po stronie klienta i usługa Azure Key Vault dla usługi Microsoft Azure Storage, samouczek: szyfrowanie i odszyfrowywanie obiektów blob w usłudze Microsoft Azure Storage przy użyciu usługi Azure Key Vault, bezpieczne przechowywanie danych w usłudze Azure Blob Storage przy użyciu rozszerzeń usługi Azure Encryption
Kroki

Biblioteka klienta usługi Azure Storage dla pakietu NuGet platformy .NET obsługuje szyfrowanie danych w aplikacjach klienckich przed przekazaniem do usługi Azure Storage i odszyfrowywaniem danych podczas pobierania do klienta. Biblioteka obsługuje również integrację z magazynem kluczy Azure do zarządzania kluczami konta magazynu. Oto krótki opis działania szyfrowania po stronie klienta:

  • Zestaw SDK klienta usługi Azure Storage generuje klucz szyfrowania zawartości (CEK), który jest jednorazowym kluczem symetrycznym
  • Dane klienta są szyfrowane przy użyciu tego klucza CEK
  • Klucz CEK jest następnie opakowany (zaszyfrowany) przy użyciu klucza szyfrowania klucza (KEK). Klucz KEK jest identyfikowany przez identyfikator klucza i może być parą kluczy asymetrycznych lub kluczem symetrycznym i może być zarządzany lokalnie lub przechowywany w usłudze Azure Key Vault. Sam klient magazynu nigdy nie ma dostępu do KEK. Po prostu wywołuje algorytm opakowujący klucze udostępniany przez usługę Key Vault. Klienci mogą zdecydować się na użycie dostawców niestandardowych do opakowywania/odpakowywania kluczy, jeśli sobie życzą.
  • Zaszyfrowane dane są następnie przekazywane do usługi Azure Storage. Zapoznaj się z linkami w sekcji odniesień, aby uzyskać informacje o szczegółach implementacji niskiego poziomu.

Zaszyfruj dane poufne, w tym dane osobowe, zapisane w lokalnej pamięci na telefonach.

Tytuł Szczegóły
Składnik Klient mobilny
Faza SDL Budowanie
Stosowalne technologie Ogólna
Atrybuty Nie dotyczy
Dokumentacja Zarządzanie ustawieniami i funkcjami na urządzeniach przy użyciu zasad usługi Microsoft Intune
Kroki

Jeśli aplikacja zapisuje poufne informacje, takie jak dane osobowe użytkownika (adres e-mail, numer telefonu, imię, nazwisko, preferencje itp.)— w systemie plików dla urządzeń przenośnych należy go zaszyfrować przed zapisaniem w lokalnym systemie plików. Jeśli aplikacja jest aplikacją dla przedsiębiorstw, zapoznaj się z możliwością publikowania aplikacji przy użyciu usługi Windows Intune.

Przykład

Usługę Intune można skonfigurować przy użyciu następujących zasad zabezpieczeń w celu ochrony poufnych danych:

Require encryption on mobile device    
Require encryption on storage cards
Allow screen capture

Przykład

Jeśli aplikacja nie jest aplikacją dla przedsiębiorstw, użyj standardowego magazynu i pęków kluczy dostarczonych przez platformę do przechowywania kluczy szyfrowania, za pomocą których można wykonywać operacje kryptograficzne w systemie plików. Poniższy fragment kodu pokazuje, jak uzyskać dostęp do klucza z pęku kluczy przy użyciu platformy .NET dla systemu iOS:

        protected static string EncryptionKey
        {
            get
            {
                if (String.IsNullOrEmpty(_Key))
                {
                    var query = new SecRecord(SecKind.GenericPassword);
                    query.Service = NSBundle.MainBundle.BundleIdentifier;
                    query.Account = "UniqueID";

                    NSData uniqueId = SecKeyChain.QueryAsData(query);
                    if (uniqueId == null)
                    {
                        query.ValueData = NSData.FromString(System.Guid.NewGuid().ToString());
                        var err = SecKeyChain.Add(query);
                        _Key = query.ValueData.ToString();
                    }
                    else
                    {
                        _Key = uniqueId.ToString();
                    }
                }

                return _Key;
            }
        }

Zaciemniaj wygenerowane pliki binarne przed dystrybucją do użytkowników końcowych

Tytuł Szczegóły
Składnik Klient mobilny
Faza SDL Budowa
Odpowiednie technologie Ogólna
Atrybuty Nie dotyczy
Dokumentacja Zaciemnianie kryptograficzne dla platformy .NET
Kroki Wygenerowane pliki binarne (zestawy w pliku apk) powinny być zaciemnione, aby zatrzymać odwrotną inżynierię zestawów. Narzędzia takie jak CryptoObfuscator mogą być używane w tym celu.

Ustaw wartość clientCredentialType na certyfikat lub system Windows

Tytuł Szczegóły
Składnik WCF
Faza SDL Budowa
Stosowane technologie .NET Framework 3
Atrybuty Nie dotyczy
Dokumentacja Wzmocnić
Kroki Użycie tokenu UsernameToken z hasłem w postaci zwykłego tekstu za pośrednictwem niezaszyfrowanego kanału uwidacznia hasło osobom atakującym, którzy mogą wąchać komunikaty PROTOKOŁU SOAP. Dostawcy usług korzystający z elementu UsernameToken mogą akceptować hasła wysyłane w postaci zwykłego tekstu. Wysyłanie haseł w postaci tekstu jawnego za pośrednictwem niezaszyfrowanego kanału może ujawnić poświadczenia atakującym, którzy mogą przechwycić komunikat SOAP.

Przykład

Następująca konfiguracja dostawcy usług WCF używa tokenu UsernameToken:

<security mode="Message">
<message clientCredentialType="UserName" />

Ustaw wartość clientCredentialType na certyfikat lub system Windows.

Tryb zabezpieczeń WCF nie jest włączony

Tytuł Szczegóły
Składnik WCF
Faza SDL Budowa
Stosowane technologie Ogólny, .NET Framework 3
Atrybuty Tryb zabezpieczeń — transport, tryb zabezpieczeń — komunikat
Dokumentacja MSDN, Fortify Kingdom, Fundamentals of WCF Security CoDe Magazine
Kroki Nie zdefiniowano zabezpieczeń transportu ani wiadomości. Aplikacje, które przesyłają komunikaty bez zabezpieczeń transportu lub wiadomości, nie mogą zagwarantować integralności ani poufności wiadomości. Gdy powiązanie zabezpieczeń programu WCF jest ustawione na Wartość Brak, zabezpieczenia transportu i komunikatów są wyłączone.

Przykład

Poniższa konfiguracja ustawia tryb zabezpieczeń na Wartość Brak.

<system.serviceModel>
  <bindings>
    <wsHttpBinding>
      <binding name=""MyBinding"">
        <security mode=""None""/>
      </binding>
  </bindings>
</system.serviceModel>

Przykład

Tryb zabezpieczeń we wszystkich powiązaniach usługi istnieje pięć możliwych trybów zabezpieczeń:

  • Brak. Wyłącza zabezpieczenia.
  • Transport. Używa zabezpieczeń transportu do wzajemnego uwierzytelniania i ochrony komunikatów.
  • Wiadomość. Używa zabezpieczeń komunikatów do wzajemnego uwierzytelniania i ochrony komunikatów.
  • Oba Umożliwia podawanie ustawień zabezpieczeń dla transportu i na poziomie komunikatów (obsługuje to tylko MSMQ).
  • TransportWithMessageCredential. Poświadczenia są przekazywane wraz z komunikatem, a ochrona komunikatów i uwierzytelnianie serwera są zapewniane przez warstwę transportową.
  • TransportCredentialOnly. Poświadczenia klienta są przekazywane za pomocą warstwy transportu i nie stosuje się żadnej ochrony wiadomości. Użyj zabezpieczeń transportu i wiadomości, aby chronić integralność i poufność wiadomości. Poniższa konfiguracja informuje usługę o użyciu zabezpieczeń transportowych z poświadczeniami wiadomości.
    <system.serviceModel>
    <bindings>
      <wsHttpBinding>
      <binding name=""MyBinding"">
      <security mode=""TransportWithMessageCredential""/>
      <message clientCredentialType=""Windows""/>
      </binding>
    </bindings>
    </system.serviceModel>