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. |
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
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ń: