Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
İçerik Güvenlik İlkesi (CSP) uygulama ve satır içi JavaScript'i devre dışı bırakma
| Başlık | Ayrıntılar |
|---|---|
| Bileşen | Web Uygulaması |
| SDL Aşaması | Derleme |
| Geçerli Teknolojiler | Genel |
| Öznitelikler | Yok |
| Başvurular | İçerik Güvenliği İlkesine Giriş, İçerik Güvenlik İlkesi Başvurusu, İçerik güvenliği ilkesine giriş, CSP'yi kullanabilir miyim? |
| Adımlar | İçerik Güvenliği İlkesi (CSP), web uygulaması sahiplerinin sitelerine eklenmiş içerik üzerinde denetim sahibi olmasını sağlayan bir W3C standardı olan derinlemesine savunma güvenlik mekanizmasıdır. CSP, web sunucusuna HTTP yanıt üst bilgisi olarak eklenir ve istemci tarafında tarayıcılar tarafından zorlanır. İzin verilen liste tabanlı bir ilkedir. Web sitesi, JavaScript gibi etkin içeriğin yüklenebileceği bir dizi güvenilen etki alanı bildirebilir. CSP aşağıdaki güvenlik avantajlarını sağlar:
|
Örnek
Örnek ilke:
Content-Security-Policy: default-src 'self'; script-src 'self' www.google-analytics.com
Bu ilke, betiklerin yalnızca web uygulamasının sunucusundan ve google analytics sunucusundan yüklenmesine olanak tanır. Başka bir siteden yüklenen betikler reddedilir. Bir web sitesinde CSP etkinleştirildiğinde, XSS saldırılarını azaltmak için aşağıdaki özellikler otomatik olarak devre dışı bırakılır.
Örnek
Satır içi betikler yürütülmeyecek. Aşağıda satır içi betik örnekleri verilmiştir
<script> some JavaScript code </script>
Event handling attributes of HTML tags (for example, <button onclick="function(){}">
javascript:alert(1);
Örnek
Dizeler kod olarak değerlendirilmez.
Example: var str="alert(1)"; eval(str);
Tarayıcının XSS filtresini etkinleştirme
| Başlık | Ayrıntılar |
|---|---|
| Bileşen | Web Uygulaması |
| SDL Aşaması | Derleme |
| Geçerli Teknolojiler | Genel |
| Öznitelikler | Yok |
| Başvurular | XSS Koruma Filtresi |
| Adımlar | X-XSS-Protection yanıt üst bilgisi yapılandırması, tarayıcının siteler arası betik filtresini denetler. Bu yanıt üst bilgisi aşağıdaki değerlere sahip olabilir:
Bu, ayrıntıları seçtiğiniz bir URI'ye göndermek için CSP ihlal raporlarını kullanan bir Chromium işlevidir. Son iki seçenek güvenli değerler olarak kabul edilir. |
ASP.NET uygulamaların dağıtımdan önce izlemeyi ve hata ayıklamayı devre dışı bırakması gerekir
| Başlık | Ayrıntılar |
|---|---|
| Bileşen | Web Uygulaması |
| SDL Aşaması | Derleme |
| Geçerli Teknolojiler | Genel |
| Öznitelikler | Yok |
| Başvurular | ASP.NET Hata Ayıklamaya Genel Bakış, ASP.NET İzlemeye Genel Bakış, Nasıl yapılır: ASP.NET Bir Uygulama için İzlemeyi Etkinleştirme, Nasıl yapılır: ASP.NET Uygulamalar için Hata Ayıklamayı Etkinleştirme |
| Adımlar | sayfa için izleme etkinleştirildiğinde, isteyen her tarayıcı iç sunucu durumu ve iş akışı hakkındaki verileri içeren izleme bilgilerini de alır. Bu bilgiler güvenliğe duyarlı olabilir. Sayfa için hata ayıklama etkinleştirildiğinde, sunucuda oluşan hatalar tarayıcıya sunulan tam yığın izleme verileriyle sonuçlanır. Bu veriler sunucunun iş akışıyla ilgili güvenlik duyarlı bilgileri kullanıma sunabilir. |
Yalnızca güvenilen kaynaklardan üçüncü taraf JavaScript'lere erişme
| Başlık | Ayrıntılar |
|---|---|
| Bileşen | Web Uygulaması |
| SDL Aşaması | Derleme |
| Geçerli Teknolojiler | Genel |
| Öznitelikler | Yok |
| Başvurular | Yok |
| Adımlar | Üçüncü taraf JavaScript'lere yalnızca güvenilir kaynaklardan başvurulmalıdır. Başvuru uç noktaları her zaman TLS'de olmalıdır. |
Kimliği doğrulanmış ASP.NET sayfalarının kullanıcı arabirimi yeniden oluşturma veya tıklamayla giriş savunması içerdiğini emin olun
| Başlık | Ayrıntılar |
|---|---|
| Bileşen | Web Uygulaması |
| SDL Aşaması | Derleme |
| Geçerli Teknolojiler | Genel |
| Öznitelikler | Yok |
| Başvurular | OWASP tıkla-çekme Savunma Bilgi Sayfası, Internet Explorer Internals - X-Frame-Options ile tıklama jacking ile mücadele |
| Adımlar | "UI yeniden giriş saldırısı" olarak da bilinen tıklama jakı, bir saldırganın üst düzey sayfaya tıklamayı amaçladığında kullanıcıyı başka bir sayfadaki bir düğmeye veya bağlantıya tıklaması için kandırmak için birden çok saydam veya opak katman kullanmasıdır. Bu katmanlama, kurbanın sayfasını yükleyen bir iframe ile kötü amaçlı bir sayfa oluşturarak elde edilir. Bu nedenle, saldırgan kendi sayfası için yapılan tıklamaları "ele geçirerek" büyük olasılıkla başka bir uygulamaya, etki alanına veya her ikisine de ait olan başka bir sayfaya yönlendiriyor. Tıklama jacking saldırılarını önlemek için, tarayıcıya diğer etki alanlarından çerçeve oluşturma izni vermemesini belirten uygun X-Frame-Options HTTP yanıt üst bilgilerini ayarlayın |
Örnek
X-FRAME-OPTIONS üst bilgisi IIS web.config aracılığıyla ayarlanabilir. Hiçbir zaman çerçevelendirilmemesi gereken siteler için Web.config kod parçacığı:
<system.webServer>
<httpProtocol>
<customHeader>
<add name="X-FRAME-OPTIONS" value="DENY"/>
</customHeaders>
</httpProtocol>
</system.webServer>
Örnek
Yalnızca aynı etki alanındaki sayfalara göre çerçevelenmesi gereken siteler için Web.config kodu:
<system.webServer>
<httpProtocol>
<customHeader>
<add name="X-FRAME-OPTIONS" value="SAMEORIGIN"/>
</customHeaders>
</httpProtocol>
</system.webServer>
ASP.NET Web Uygulamalarında CORS etkinleştirildiğinde yalnızca güvenilen kaynaklara izin verildiğinden emin olun
| Başlık | Ayrıntılar |
|---|---|
| Bileşen | Web Uygulaması |
| SDL Aşaması | Derleme |
| Geçerli Teknolojiler | Web Formları, MVC5 |
| Öznitelikler | Yok |
| Başvurular | Yok |
| Adımlar | Tarayıcı güvenliği, bir web sitesinin başka bir etki alanına AJAX istekleri göndermesini engeller. Bu kısıtlama aynı kaynak ilkesi olarak adlandırılır ve kötü amaçlı bir sitenin başka bir siteden hassas verileri okumasını önler. Ancak, bazen diğer sitelerin kullanabileceği API'leri güvenli bir şekilde kullanıma sunmanız gerekebilir. Çıkış Noktaları Arası Kaynak Paylaşımı (CORS), bir sunucunun aynı kaynak ilkesini gevşetmesini sağlayan bir W3C standardıdır. BIR sunucu CORS kullanarak bazı çıkış noktaları arası isteklere izin verirken diğerlerini reddedebilir. CORS, JSONP gibi önceki tekniklerden daha güvenli ve esnektir. CorS'nin etkinleştirilmesi, temel olarak web uygulamasına birkaç HTTP yanıt üst bilgisi (Access-Control-*) eklemeye çevrilir ve bu işlem birkaç yolla yapılabilir. |
Örnek
Web.config erişimi varsa CORS aşağıdaki kod aracılığıyla eklenebilir:
<system.webServer>
<httpProtocol>
<customHeaders>
<clear />
<add name="Access-Control-Allow-Origin" value="https://example.com" />
</customHeaders>
</httpProtocol>
Örnek
web.config'e erişim kullanılamıyorsa CORS aşağıdaki C# kodu eklenerek yapılandırılabilir:
HttpContext.Response.AppendHeader("Access-Control-Allow-Origin", "https://example.com")
"Access-Control-Allow-Origin" özniteliğindeki kaynak listesinin sonlu ve güvenilen bir kaynak kümesine ayarlandığından emin olun. Bunu uygun olmayan bir şekilde yapılandırmamak (örneğin, değeri '*' olarak ayarlamak), kötü amaçlı sitelerin herhangi bir kısıtlama olmadan web uygulamasına >çıkış noktaları arası istekleri tetiklesine olanak tanıyarak uygulamayı CSRF saldırılarına karşı savunmasız hale getirir.
ASP.NET Sayfalarında ValidateRequest özniteliğini etkinleştirme
| Başlık | Ayrıntılar |
|---|---|
| Bileşen | Web Uygulaması |
| SDL Aşaması | Derleme |
| Geçerli Teknolojiler | Web Formları, MVC5 |
| Öznitelikler | Yok |
| Başvurular | İstek Doğrulama - Betik Saldırılarını Önleme |
| Adımlar | Sürüm 1.1'den beri ASP.NET özelliği olan istek doğrulaması, sunucunun kodlanmamış HTML içeren içeriği kabul etmesini engeller. Bu özellik, istemci betik kodunun veya HTML'nin bilmeden sunucuya gönderilebildiği, depolanabildiği ve ardından diğer kullanıcılara sunulabildiği bazı betik ekleme saldırılarını engellemeye yardımcı olmak için tasarlanmıştır. Yine de tüm giriş verilerini doğrulamanızı ve uygun olduğunda HTML'yi kodlamanızı kesinlikle öneririz. İstek doğrulaması, tüm giriş verileri tehlikeli olabilecek değerler listesiyle karşılaştırılarak gerçekleştirilir. Bir eşleşme oluşursa, ASP.NET bir |
Örnek
Ancak, bu özellik sayfa düzeyinde devre dışı bırakılabilir:
<%@ Page validateRequest="false" %>
veya uygulama düzeyinde
<configuration>
<system.web>
<pages validateRequest="false" />
</system.web>
</configuration>
İstek Doğrulama özelliğinin desteklenmediğini ve MVC6 işlem hattının parçası olmadığını unutmayın.
JavaScript kitaplıklarının yerel olarak barındırılan en son sürümlerini kullanma
| Başlık | Ayrıntılar |
|---|---|
| Bileşen | Web Uygulaması |
| SDL Aşaması | Derleme |
| Geçerli Teknolojiler | Genel |
| Öznitelikler | Yok |
| Başvurular | Yok |
| Adımlar | jQuery gibi standart JavaScript kitaplıklarını kullanan geliştiricilerin bilinen güvenlik açıkları içermeyen yaygın JavaScript kitaplıklarının onaylı sürümlerini kullanması gerekir. Eski sürümlerinde bilinen güvenlik açıkları için güvenlik düzeltmeleri içerdiğinden kitaplıkların en son sürümünü kullanmak iyi bir uygulamadır. Uyumluluk nedeniyle en son sürüm kullanılamıyorsa, aşağıdaki en düşük sürümler kullanılmalıdır. Kabul edilebilir en düşük sürümler:
Genel CDN'ler gibi dış sitelerden hiçbir JavaScript kitaplığını yüklemeyin |
Otomatik MIME algılamayı devre dışı bırakma
| Başlık | Ayrıntılar |
|---|---|
| Bileşen | Web Uygulaması |
| SDL Aşaması | Derleme |
| Geçerli Teknolojiler | Genel |
| Öznitelikler | Yok |
| Başvurular | IE8 Güvenlik Bölümü V: Kapsamlı Koruma, MIME türü |
| Adımlar | X-Content-Type-Options üst bilgisi, geliştiricilerin içeriklerinin MIME koklamaması gerektiğini belirtmesine olanak tanıyan bir HTTP üst bilgisidir. Bu üst bilgi, MIME Algılama saldırılarını azaltmak için tasarlanmıştır. Kullanıcı tarafından denetlenebilir içerik içerebilen her sayfa için HTTP Üst Bilgisi X-Content-Type-Options:nosniff kullanmanız gerekir. Uygulamadaki tüm sayfalarda gerekli üst bilgiyi genel olarak etkinleştirmek için aşağıdakilerden birini yapabilirsiniz |
Örnek
Uygulama Internet Information Services (IIS) 7 tarafından barındırılıyorsa web.config dosyasına üst bilgiyi ekleyin.
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="X-Content-Type-Options" value="nosniff"/>
</customHeaders>
</httpProtocol>
</system.webServer>
Örnek
Üst bilgiyi genel Application_BeginRequest ekleme
void Application_BeginRequest(object sender, EventArgs e)
{
this.Response.Headers["X-Content-Type-Options"] = "nosniff";
}
Örnek
Özel HTTP modülü uygulama
public class XContentTypeOptionsModule : IHttpModule
{
#region IHttpModule Members
public void Dispose()
{
}
public void Init(HttpApplication context)
{
context.PreSendRequestHeaders += newEventHandler(context_PreSendRequestHeaders);
}
#endregion
void context_PreSendRequestHeaders(object sender, EventArgs e)
{
HttpApplication application = sender as HttpApplication;
if (application == null)
return;
if (application.Response.Headers["X-Content-Type-Options "] != null)
return;
application.Response.Headers.Add("X-Content-Type-Options ", "nosniff");
}
}
Örnek
Gerekli üst bilgiyi tek tek yanıtlara ekleyerek yalnızca belirli sayfalar için etkinleştirebilirsiniz:
this.Response.Headers["X-Content-Type-Options"] = "nosniff";
Parmak izi kullanmaktan kaçınmak için Windows Azure Web Sitelerinde standart sunucu üst bilgilerini kaldırma
| Başlık | Ayrıntılar |
|---|---|
| Bileşen | Web Uygulaması |
| SDL Aşaması | Derleme |
| Geçerli Teknolojiler | Genel |
| Öznitelikler | OrtamTürü - Azure |
| Başvurular | Windows Azure Web Sitelerinde standart sunucu üst bilgilerini kaldırma |
| Adımlar | Sunucu, X-Powered-By, X-AspNet-Version gibi üst bilgiler sunucu ve temel teknolojiler hakkındaki bilgileri gösterir. Bu üst bilgilerin gizlenmesi ve böylece uygulamanın parmak izinin alınmasının engellenmesi önerilir |
Veritabanı Altyapısı Erişimi için Windows Güvenlik Duvarı Yapılandırma
| Başlık | Ayrıntılar |
|---|---|
| Bileşen | Veritabanı |
| SDL Aşaması | Derleme |
| Geçerli Teknolojiler | SQL Azure, Şirket İçi |
| Öznitelikler | Yok, SQL Sürümü - V12 |
| Başvurular | Azure SQL Veritabanı güvenlik duvarı yapılandırma, Veritabanı Altyapısı Erişimi için Windows Güvenlik Duvarı Yapılandırma |
| Adımlar | Güvenlik duvarı sistemleri bilgisayar kaynaklarına yetkisiz erişimi önlemeye yardımcı olur. Sql Server Veritabanı Altyapısı örneğine bir güvenlik duvarı üzerinden erişmek için, SQL Server çalıştıran bilgisayarda güvenlik duvarını erişime izin verecek şekilde yapılandırmanız gerekir |
ASP.NET Web API'sinde CORS etkinleştirildiğinde yalnızca güvenilen kaynaklara izin verildiğinden emin olun
| Başlık | Ayrıntılar |
|---|---|
| Bileşen | Web API'si |
| SDL Aşaması | Derleme |
| Geçerli Teknolojiler | MVC 5 (MVC) |
| Öznitelikler | Yok |
| Başvurular | ASP.NET Web API 2, ASP.NET Web API'sinde Çıkış Noktaları Arası İstekleri Etkinleştirme - ASP.NET Web API 2'de CORS Desteği |
| Adımlar | Tarayıcı güvenliği, bir web sitesinin başka bir etki alanına AJAX istekleri göndermesini engeller. Bu kısıtlama aynı kaynak ilkesi olarak adlandırılır ve kötü amaçlı bir sitenin başka bir siteden hassas verileri okumasını önler. Ancak, bazen diğer sitelerin kullanabileceği API'leri güvenli bir şekilde kullanıma sunmanız gerekebilir. Çıkış Noktaları Arası Kaynak Paylaşımı (CORS), bir sunucunun aynı kaynak ilkesini gevşetmesini sağlayan bir W3C standardıdır. BIR sunucu CORS kullanarak bazı çıkış noktaları arası isteklere izin verirken diğerlerini reddedebilir. CORS, JSONP gibi önceki tekniklerden daha güvenli ve esnektir. |
Örnek
App_Start/WebApiConfig.cs WebApiConfig.Register yöntemine aşağıdaki kodu ekleyin
using System.Web.Http;
namespace WebService
{
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// New code
config.EnableCors();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
}
Örnek
EnableCors özniteliği bir denetleyicideki eylem yöntemlerine aşağıdaki gibi uygulanabilir:
public class ResourcesController : ApiController
{
[EnableCors("http://localhost:55912", // Origin
null, // Request headers
"GET", // HTTP methods
"bar", // Response headers
SupportsCredentials=true // Allow credentials
)]
public HttpResponseMessage Get(int id)
{
var resp = Request.CreateResponse(HttpStatusCode.NoContent);
resp.Headers.Add("bar", "a bar value");
return resp;
}
[EnableCors("http://localhost:55912", // Origin
"Accept, Origin, Content-Type", // Request headers
"PUT", // HTTP methods
PreflightMaxAge=600 // Preflight cache duration
)]
public HttpResponseMessage Put(Resource data)
{
return Request.CreateResponse(HttpStatusCode.OK, data);
}
[EnableCors("http://localhost:55912", // Origin
"Accept, Origin, Content-Type", // Request headers
"POST", // HTTP methods
PreflightMaxAge=600 // Preflight cache duration
)]
public HttpResponseMessage Post(Resource data)
{
return Request.CreateResponse(HttpStatusCode.OK, data);
}
}
EnableCors özniteliğindeki kaynak listesinin sonlu ve güvenilen bir kaynak kümesine ayarlandığından emin olun. Bunu uygunsuz bir şekilde yapılandırmamak (örneğin, değeri '*' olarak ayarlamak), kötü amaçlı sitelerin herhangi bir kısıtlama >olmadan API'ye çıkış noktaları arası istekleri tetikleebilmesine olanak tanıyarak API'yi CSRF saldırılarına karşı savunmasız hale getirir. EnableCors denetleyici düzeyinde dekore edilebilir.
Örnek
Bir sınıftaki belirli bir yöntemde CORS'yi devre dışı bırakmak için DisableCors özniteliği aşağıda gösterildiği gibi kullanılabilir:
[EnableCors("https://example.com", "Accept, Origin, Content-Type", "POST")]
public class ResourcesController : ApiController
{
public HttpResponseMessage Put(Resource data)
{
return Request.CreateResponse(HttpStatusCode.OK, data);
}
public HttpResponseMessage Post(Resource data)
{
return Request.CreateResponse(HttpStatusCode.OK, data);
}
// CORS not allowed because of the [DisableCors] attribute
[DisableCors]
public HttpResponseMessage Delete(int id)
{
return Request.CreateResponse(HttpStatusCode.NoContent);
}
}
| Başlık | Ayrıntılar |
|---|---|
| Bileşen | Web API'si |
| SDL Aşaması | Derleme |
| Geçerli Teknolojiler | MVC 6 |
| Öznitelikler | Yok |
| Başvurular | ASP.NET Core 1.0'da Çıkış Noktaları Arası İstekleri (CORS) Etkinleştirme |
| Adımlar | ASP.NET Core 1.0'da CORS ara yazılım veya MVC kullanılarak etkinleştirilebilir. CORS'yi etkinleştirmek için MVC kullanılırken aynı CORS hizmetleri kullanılır, ancak CORS ara yazılımı kullanılmaz. |
Yaklaşım-1 Ara yazılım ile CORS'yi etkinleştirme: CorS'yi uygulamanın tamamında etkinleştirmek için UseCors uzantısı yöntemini kullanarak CORS ara yazılımını istek işlem hattına ekleyin. CorsPolicyBuilder sınıfı kullanılarak CORS ara yazılımı eklenirken çıkış noktaları arası bir ilke belirtilebilir. Bunu yapmak için iki yol vardır:
Örnek
İlki UseCors'u lambda ile çağırmaktır. Lambda bir CorsPolicyBuilder nesnesi alır:
public void Configure(IApplicationBuilder app)
{
app.UseCors(builder =>
builder.WithOrigins("https://example.com")
.WithMethods("GET", "POST", "HEAD")
.WithHeaders("accept", "content-type", "origin", "x-custom-header"));
}
Örnek
İkincisi, bir veya daha fazla adlandırılmış CORS ilkesi tanımlamak ve ardından çalışma zamanında ilkeyi ada göre seçmektir.
public void ConfigureServices(IServiceCollection services)
{
services.AddCors(options =>
{
options.AddPolicy("AllowSpecificOrigin",
builder => builder.WithOrigins("https://example.com"));
});
}
public void Configure(IApplicationBuilder app)
{
app.UseCors("AllowSpecificOrigin");
app.Run(async (context) =>
{
await context.Response.WriteAsync("Hello World!");
});
}
Yaklaşım-2 MVC'de CORS'yi etkinleştirme: Geliştiriciler alternatif olarak MVC'yi kullanarak eylem başına, denetleyici başına veya tüm denetleyiciler için genel olarak belirli CORS'yi uygulayabilir.
Örnek
Eylem başına: Belirli bir eylem için bir CORS ilkesi belirtmek için eyleme [EnableCors] özniteliğini ekleyin. İlke adını belirtin.
public class HomeController : Controller
{
[EnableCors("AllowSpecificOrigin")]
public IActionResult Index()
{
return View();
}
Örnek
Denetleyici başına:
[EnableCors("AllowSpecificOrigin")]
public class HomeController : Controller
{
Örnek
Genel:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.Configure<MvcOptions>(options =>
{
options.Filters.Add(new CorsAuthorizationFilterFactory("AllowSpecificOrigin"));
});
}
EnableCors özniteliğindeki kaynak listesinin sonlu ve güvenilen bir kaynak kümesine ayarlandığından emin olun. Bunu uygunsuz bir şekilde yapılandırmamak (örneğin, değeri '*' olarak ayarlamak), kötü amaçlı sitelerin herhangi bir kısıtlama >olmadan API'ye çıkış noktaları arası istekleri tetikleebilmesine olanak tanıyarak API'yi CSRF saldırılarına karşı savunmasız hale getirir.
Örnek
Bir denetleyici veya eylem için CORS'yi devre dışı bırakmak için [DisableCors] özniteliğini kullanın.
[DisableCors]
public IActionResult About()
{
return View();
}
Web API'sinin yapılandırma dosyalarının hassas veriler içeren bölümlerini şifreleme
| Başlık | Ayrıntılar |
|---|---|
| Bileşen | Web API'si |
| SDL Aşaması | Dağıtım |
| Geçerli Teknolojiler | Genel |
| Öznitelikler | Yok |
| Başvurular | Nasıl Yapılır: ASP.NET 2.0'da Yapılandırma Bölümlerini Şifreleme DPAPI Kullanarak, Korumalı Yapılandırma Sağlayıcısı Belirtme, Uygulama gizli dizilerini korumak için Azure Key Vault Kullanma |
| Adımlar | Web.config, appsettings.json gibi yapılandırma dosyaları genellikle kullanıcı adları, parolalar, veritabanı bağlantı dizesi ve şifreleme anahtarları gibi hassas bilgileri tutmak için kullanılır. Bu bilgileri korumazsanız, uygulamanız hesap kullanıcı adları ve parolaları, veritabanı adları ve sunucu adları gibi hassas bilgileri alan saldırganlara veya kötü amaçlı kullanıcılara karşı savunmasızdır. Dağıtım türüne (azure/şirket içi) bağlı olarak, DPAPI veya Azure Key Vault gibi hizmetleri kullanarak yapılandırma dosyalarının hassas bölümlerini şifreleyin. |
Tüm yönetici arabirimlerinin güçlü kimlik bilgileriyle güvenli olduğundan emin olun
| Başlık | Ayrıntılar |
|---|---|
| Bileşen | IoT Cihazı |
| SDL Aşaması | Dağıtım |
| Geçerli Teknolojiler | Genel |
| Öznitelikler | Yok |
| Başvurular | Yok |
| Adımlar | Cihaz veya alan ağ geçidinin kullanıma sağladığı tüm yönetim arabirimleri güçlü kimlik bilgileri kullanılarak güvenli hale getirilmelidir. Ayrıca WiFi, SSH, Dosya paylaşımları, FTP gibi diğer tüm kullanıma sunulan arabirimler güçlü kimlik bilgileriyle güvenli hale getirilmelidir. Varsayılan zayıf parolalar kullanılmamalıdır. |
Bilinmeyen kodun cihazlarda yürütülemediğine emin olun
| Başlık | Ayrıntılar |
|---|---|
| Bileşen | IoT Cihazı |
| SDL Aşaması | Derleme |
| Geçerli Teknolojiler | Genel |
| Öznitelikler | Yok |
| Başvurular | Windows 10 IoT Core'da Güvenli Önyükleme ve BitLocker Cihaz Şifrelemesini Etkinleştirme |
| Adımlar | UEFI Güvenli Önyükleme, sistemi yalnızca belirtilen bir yetkili tarafından imzalanan ikili dosyaların yürütülmesine izin verecek şekilde kısıtlar. Bu özellik bilinmeyen kodun platformda yürütülmesini engeller ve bunun güvenlik duruşunu zayıflatma olasılığı vardır. UEFI Güvenli Önyükleme'yi etkinleştirin ve imzalama kodu için güvenilen sertifika yetkililerinin listesini kısıtlayın. Güvenilir yetkililerden birini kullanarak cihazda dağıtılan tüm kodları imzalayın. |
İşletim sistemini ve IoT Cihazının diğer bölümlerini BitLocker ile şifreleme
| Başlık | Ayrıntılar |
|---|---|
| Bileşen | IoT Cihazı |
| SDL Aşaması | Derleme |
| Geçerli Teknolojiler | Genel |
| Öznitelikler | Yok |
| Başvurular | Yok |
| Adımlar | Windows 10 IoT Core, UEFI'de gerekli ölçümleri yapan gerekli preOS protokolü de dahil olmak üzere platformda tpm bulunmasına güçlü bir bağımlılığı olan basit bir BitLocker Cihaz Şifrelemesi sürümünü uygular. Bu preOS ölçümleri, işletim sisteminin daha sonra işletim sisteminin nasıl başlatıldığına ilişkin kesin bir kayda sahip olmasını sağlar. BitLocker'ı ve diğer tüm bölümleri kullanarak işletim sistemi bölümlerini şifrelemek için hassas verileri depolayın. |
Cihazlarda yalnızca en düşük hizmetlerin/özelliklerin etkinleştirildiğinden emin olun
| Başlık | Ayrıntılar |
|---|---|
| Bileşen | IoT Cihazı |
| SDL Aşaması | Dağıtım |
| Geçerli Teknolojiler | Genel |
| Öznitelikler | Yok |
| Başvurular | Yok |
| Adımlar | İşletim sistemindeki çözümün çalışması için gerekli olmayan özellikleri veya hizmetleri etkinleştirmeyin veya kapatmayın. Örneğin, cihazın dağıtılması için bir kullanıcı arabirimi gerekmiyorsa Windows IoT Core'u başsız modda yükleyin. |
İşletim sistemini ve IoT Alan Ağ Geçidi'nin diğer bölümlerini BitLocker ile şifreleme
| Başlık | Ayrıntılar |
|---|---|
| Bileşen | IoT Alan Ağ Geçidi |
| SDL Aşaması | Dağıtım |
| Geçerli Teknolojiler | Genel |
| Öznitelikler | Yok |
| Başvurular | Yok |
| Adımlar | Windows 10 IoT Core, UEFI'de gerekli ölçümleri yapan gerekli preOS protokolü de dahil olmak üzere platformda tpm bulunmasına güçlü bir bağımlılığı olan basit bir BitLocker Cihaz Şifrelemesi sürümünü uygular. Bu preOS ölçümleri, işletim sisteminin daha sonra işletim sisteminin nasıl başlatıldığına ilişkin kesin bir kayda sahip olmasını sağlar. BitLocker'ı ve diğer tüm bölümleri kullanarak işletim sistemi bölümlerini şifrelemek için hassas verileri depolayın. |
Yükleme sırasında alan ağ geçidinin varsayılan oturum açma kimlik bilgilerinin değiştirildiğinden emin olun
| Başlık | Ayrıntılar |
|---|---|
| Bileşen | IoT Alan Ağ Geçidi |
| SDL Aşaması | Dağıtım |
| Geçerli Teknolojiler | Genel |
| Öznitelikler | Yok |
| Başvurular | Yok |
| Adımlar | Yükleme sırasında alan ağ geçidinin varsayılan oturum açma kimlik bilgilerinin değiştirildiğinden emin olun |
Cloud Gateway'in bağlı cihaz üretici yazılımını güncel tutmaya yönelik bir işlem uyguladığından emin olun
| Başlık | Ayrıntılar |
|---|---|
| Bileşen | IoT Cloud Gateway |
| SDL Aşaması | Derleme |
| Geçerli Teknolojiler | Genel |
| Öznitelikler | Ağ geçidi seçimi - Azure IoT Hub |
| Başvurular | IoT Hub Cihaz Yönetimi Genel Bakış,Raspberry Pi 3 B+ Başvuru Görüntüsünü kullanarak Azure IoT Hub için Cihaz Güncelleştirmesi öğreticisi. |
| Adımlar | LWM2M, IoT için Open Mobile Alliance Cihaz Yönetimi bir protokoldür. Azure IoT cihaz yönetimi, cihaz işlerini kullanarak fiziksel cihazlarla etkileşim kurmanızı sağlar. Cloud Gateway'in Azure IoT Hub Cihaz Yönetimi kullanarak cihazı ve diğer yapılandırma verilerini düzenli olarak güncel tutmaya yönelik bir işlem uyguladığından emin olun. |
Cihazların kuruluş ilkelerine göre yapılandırılmış son nokta güvenlik denetimlerine sahip olduğundan emin olun
| Başlık | Ayrıntılar |
|---|---|
| Bileşen | Makine Güven Sınırı |
| SDL Aşaması | Dağıtım |
| Geçerli Teknolojiler | Genel |
| Öznitelikler | Yok |
| Başvurular | Yok |
| Adımlar | Cihazların disk düzeyinde şifreleme için BitLocker, güncelleştirilmiş imzalarla virüsten koruma, konak tabanlı güvenlik duvarı, işletim sistemi yükseltmeleri, grup ilkeleri vb. gibi uç nokta güvenlik denetimlerinin kuruluş güvenlik ilkelerine göre yapılandırıldığından emin olun. |
Azure depolama erişim anahtarlarının güvenli yönetimini sağlama
| Başlık | Ayrıntılar |
|---|---|
| Bileşen | Azure Depolama |
| SDL Aşaması | Dağıtım |
| Geçerli Teknolojiler | Genel |
| Öznitelikler | Yok |
| Başvurular | Azure Depolama güvenlik kılavuzu - Depolama Hesabı Anahtarlarınızı Yönetme |
| Adımlar | Anahtar Depolama: Azure Depolama erişim anahtarlarının Azure Key Vault'ta gizli dizi olarak depolanması ve uygulamaların anahtarı anahtar kasasından alması önerilir. Bu, aşağıdaki nedenlerden dolayı önerilir:
|
Azure depolamada CORS etkinleştirildiğinde yalnızca güvenilen kaynaklara izin verildiğinden emin olun
| Başlık | Ayrıntılar |
|---|---|
| Bileşen | Azure Depolama |
| SDL Aşaması | Derleme |
| Geçerli Teknolojiler | Genel |
| Öznitelikler | Yok |
| Başvurular | Azure Depolama Hizmetleri için CORS Desteği |
| Adımlar | Azure Depolama, CORS – Çıkış Noktaları Arası Kaynak Paylaşımı'nı etkinleştirmenize olanak tanır. Her depolama hesabı için, bu depolama hesabındaki kaynaklara erişebilecek etki alanlarını belirtebilirsiniz. Varsayılan olarak, CORS tüm hizmetlerde devre dışıdır. HIZMET ilkelerini ayarlama yöntemlerinden birini çağırmak için REST API'yi veya depolama istemci kitaplığını kullanarak CORS'yi etkinleştirebilirsiniz. |
WCF'nin hizmet azaltma özelliğini etkinleştirme
| Başlık | Ayrıntılar |
|---|---|
| Bileşen | WCF |
| SDL Aşaması | Derleme |
| Geçerli Teknolojiler | .NET Framework 3 |
| Öznitelikler | Yok |
| Başvurular | MSDN, Fortify Kingdom |
| Adımlar | Sistem kaynaklarının kullanımına bir sınır getirilmemesi, kaynak tükenmesine ve sonuçta hizmet reddine neden olabilir.
|
Örnek
Aşağıda azaltmanın etkinleştirildiği örnek bir yapılandırma verilmiştir:
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="Throttled">
<serviceThrottling maxConcurrentCalls="[YOUR SERVICE VALUE]" maxConcurrentSessions="[YOUR SERVICE VALUE]" maxConcurrentInstances="[YOUR SERVICE VALUE]" />
...
</system.serviceModel>
WCF-Bilgilerin meta veriler aracılığıyla açığa çıkması
| Başlık | Ayrıntılar |
|---|---|
| Bileşen | WCF |
| SDL Aşaması | Derleme |
| Geçerli Teknolojiler | .NET Framework 3 |
| Öznitelikler | Yok |
| Başvurular | MSDN, Fortify Kingdom |
| Adımlar | Meta veriler, saldırganların sistem hakkında bilgi edinmelerine ve bir saldırı biçimi planlamalarına yardımcı olabilir. WCF hizmetleri meta verileri kullanıma sunacak şekilde yapılandırılabilir. Meta veriler ayrıntılı hizmet açıklaması bilgileri verir ve üretim ortamlarında yayınlanmamalıdır.
HttpGetEnabled
/
HttpsGetEnabled ServiceMetaData sınıfının özellikleri, bir hizmetin meta verileri kullanıma sununup sunmayacağını tanımlar |
Örnek
Aşağıdaki kod, WCF'ye bir hizmetin meta verilerini yayınlamasını bildirir
ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
smb.HttpGetEnabled = true;
smb.HttpGetUrl = new Uri(EndPointAddress);
Host.Description.Behaviors.Add(smb);
Hizmet meta verilerini üretim ortamında yayınlamayın. ServiceMetaData sınıfının HttpGetEnabled / HttpsGetEnabled özelliklerini false olarak ayarlayın.
Örnek
Aşağıdaki kod, WCF'ye bir hizmetin meta verilerini yayınlamamasını bildirir.
ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
smb.HttpGetEnabled = false;
smb.HttpGetUrl = new Uri(EndPointAddress);
Host.Description.Behaviors.Add(smb);