Rješavanje pogrešaka kod provjere autentičnosti šifre stanja (MAC)

Što je stanje gledišta?

Prikaz stanja su informacije koje se Zaokružava između stranica WebForms (. aspx) u aplikaciji ASP.NET. HTML oznaka za polje | VIEWSTATE sliči na sljedeće:

< vrsta unosa = "skriven" naziv = "_ | VIEWSTATE" ID = "_ | VIEWSTATE" value = "..."/>Jedan primjer stavke koja je možda spremljena u polju polja VIEWSTATE je tekst kontrole gumba. Ako korisnik klikne gumb, rukovatelj događajima Button_Click moći će izdvojiti tekst gumba iz polja stanja prikaza. Pogledajte temu ASP.net prikaza stanja pregleda na web-mjestu Microsoft Developer Network (MSDN) za mnogo detaljniji pregled stanja prikaza ASP.net. Budući da polje polja VIEWSTATE sadrži važne informacije koje se koriste za obnovu stranice na postback-u, uvjerite se da napadač ne može mijenjati ovo polje. Ako je napadač podnio zlonamjernu uslugu _ VIEWSTATE, napadač je mogao prevariti aplikaciju u obavljanju radnje koju inače ne bi izvršio. Da bi se spriječila takva vrsta napada, polje prikaza sustava | je zaštićeno kodom za provjeru autentičnosti poruke (MAC). ASP.net ovjerava Mac koji se podnosi zajedno s sustavom _ viewstate teret kada se pojavi slanja. Ključ koji se koristi za izračun MAC naveden je u elementu aplikacije u datoteci web. config. Budući da napadač ne može pogoditi sadržaj elementa < machineKey >, napadač ne može pružiti valjani MAC ako napadač pokuša miješati s teretom VIEWSTATE teret. ASP.NET će otkriti da valjani MAC nije dostupan, a ASP.NET će odbiti zlonamjerni zahtjev.

Što uzrokuje pogreške provjere valjanosti MAC?

Pogreška valjanosti MAC računala sličit će sljedećem primjeru:

Pogreška poslužitelja u '/' aplikaciji. Potvrđivanje stanja gledišta MAC nije uspjelo. Ako je ovaj program domaćin web-farme ili klastera, provjerite < machineKey > Konfiguracija određuje isti validationKey i algoritam validacije. AutoGenerate se ne može koristiti u klasteru. Opis: tijekom izvršavanja trenutnog web-zahtjeva došlo je do neobrađene iznimke. Pregledajte tragove stog za više informacija o pogrešci i gdje je nastao u kodu. Detalji o iznimci: System. web. HttpException: Validacija prikaza stanja MAC nije uspjela. Ako je ovaj program domaćin web-farme ili klastera, provjerite < machineKey > Konfiguracija određuje isti validationKey i algoritam validacije. AutoGenerate se ne može koristiti u klasteru. Izvorna pogreška: [Nema relevantnih izvornih redaka] Izvorna datoteka:... Linija: 0 Praćenje sloga: [ViewStateException: nevažeće stanje gledišta. IP klijent::: 1 Priključak: 40653 Referer: http://localhost:40643/MyPage.aspx Put:/MyPage.aspx User-agent: Mozilla/5.0 (kompatibilan; MSIE 10,0; Windows NT 6,2; WOW64 Trident/6.0) Stanje gledišta:...] [HttpException (0x80004005): Validacija gledišta MAC nije uspjela. Ako je ovaj program domaćin web-farme ili klastera, provjerite < machineKey > Konfiguracija određuje isti validationKey i algoritam validacije. AutoGenerate se ne može koristiti u klasteru. Pogledajte http://go.microsoft.com/fwlink/?LinkID=314055 za više informacija.] Sustav. web. UI. ViewStateException. ThrowError (iznimka unutarnja, String je Upornostanje, String errorPageMessage, Boolean Makvalidationerror) + 190 Sustav. web. UI. ViewStateException. ThrowMacValidationError (iznimka unutarnja, String, Upornistanje) + 46 Sustav. web. UI. ObjectStateFormatter. Deserialize (niz inputString, namjena svrha) + 861 Sustav. web. UI. ObjectStateFormatter. sustav. web. UI. IStateFormatter2. Deserialize (string Seralizedstate, namjena) + 51 Sustav. web. UI. util. DeserializeWithAssert (IStateFormatter2 formatter, String Seralizedstate, namjena) + 67 Sustav. web. UI. HiddenFieldPageStatePersister. load () + 444 Sustav. web. UI. Page. Loadpagestatefrom, Enemedium () + 368 Sustav. web. UI. Page. LoadAllState () + 109 Sustav. web. UI. Page. da biste imali (Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) + 7959 System. web. UI. Pagerequest (Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) + 429 Sustav. web. UI. Page. ProcessRequest () + 125 System. web. UI. Pagerequestwithnoassert (HttpContext Context) + 48 Sustav. web. UI. Page 234. ASP. mypage_aspx. Radi zahtjeva (HttpContext Context) u...: 0 Sustav. web. CallHandlerExecutionStep. System. web. Httpapplicacije. IExecutionStep. je () + 1300 Sustav. web. HttpApplication. ExecuteStep (IExecutionStep korak, Booleov & upotpunit) + 140

1. uzrok: web-aplikacija se izvodi na farmi (više poslužitelja okruženje)

ASP.NET automatski generira kriptografski ključ za svaku aplikaciju i pohranjuje ključ u košnici registra HKCU. Ovaj automatski generirani ključ koristi se ako ne postoji eksplicitni < machineKey > element u konfiguraciji aplikacije. Međutim, budući da je ovaj automatski generirani ključ lokalno na računalo koje je stvorilo ključ, ovaj scenarij uzrokuje problem za aplikacije koje se stvaraju na farmi. Svaki poslužitelj na farmi stvorit će vlastiti lokalni ključ, a nijedan od poslužitelja na farmi neće se složiti o tome koji ključ koristiti. Rezultat je da, ako jedan poslužitelj generira web-stanje koje drugi poslužitelj potroši, potrošač će doživjeti neuspjeh provjere valjanosti MAC.

  • Rezolucija 1a: stvorite eksplicitni < machineKey > element Dodavanjem eksplicitnog < machineKey > elementa aplikacije web. config datoteka, Developer kaže ASP.NET ne koriste automatski generirani kriptografski ključ. Pogledajte dodatak A za upute o stvaranju elementa < machineKey >. Nakon što se ovaj element doda u datoteku web. config, ponovno Implementirajte aplikaciju na svaki poslužitelj na farmi. Note Neke servise za web hosting, kao što su web-mjesta tvrtke Microsoft Azure, poduzimaju korake za sinkronizaciju automatskog generiranog ključa svake aplikacije na svojim pozadinskim poslužiteljima. To omogućuje aplikacijama koje nisu naveli eksplicitni < machineKey > element za nastavak rada u tim okruženjima, čak i ako se aplikacija izvodi na farmi. Ako je vaša aplikacija pokrenut na servisu treće strane hosting, obratite se davatelju usluga hosting kako biste utvrdili da li se ova situacija odnosi na vas.

  • Razlučivost 1B: omogućite afinitet u raspoređivača opterećenja Ako vaše web-lokacije djeluju iza raspoređivača opterećenja, možete omogućiti da afinitet poslužitelja privremeno zaobić problem. To pomaže osigurati da bilo koji klijent komunicira samo s jednim fizičkim poslužiteljem iza raspoređivača opterećenja tako da će sve kriptografske platne opterećenja biti i generira i konzumira isti poslužitelj. To se ne bi smjelo smatrati dugoročnim rješenjem problema. Čak i kada je omogućen poslužitelj afinitet, većina raspoređivači opterećenja će preusmjeriti klijenta na drugi fizički poslužitelj ako izvorni poslužitelj na koji su raspoređeni balansiranje opterećenja ide izvanmrežno. To uzrokuje da novi poslužitelj odbija kriptografske terete (kao što je _ VIEWSTATE, obrasce za provjeru autentičnosti, MVCs tokovi protiv krivotvorenja i druge usluge) koje klijent trenutno ima. Koristeći eksplicitni < machineKey > element i ponovnu implementaciju aplikacije treba preferirati preko omogućivanja afiniteta poslužitelja.

2.: postupak radnika koristi identitet grupe aplikacija IIS 7,0

Internet Information Services (IIS) 7,0 (Windows Vista, Windows Server 2008) uveo identitet grupe aplikacija, novi mehanizam izolacije koji pomaže osigurati povećanu sigurnost za poslužitelje koji pokrenuti ASP.net aplikacije. Međutim, web-mjesta koja se izvode pod identitetom grupe aplikacija nemaju pristup HKCU registru. Ovo je mjesto gdje ASP.NET Runtime pohranjuje svoje automatski generirane < machineKey > tipke. Rezultat je da ASP.NET ne može ustrajati automatski generirani ključ kada se skup aplikacija resetira. Stoga se svaki put w3wp. exe resetira, generira se novi privremeni ključ. Note To nije problem u IIS 7,5 (Windows 7, Windows Server 2008 R2) i novije verzije. U ovim verzijama sustava IIS, ASP.NET može ustrajati u automatskim generiranim ključevima na drugom mjestu koje je preživjelo ponovno postavljanje grupe aplikacija.

  • Razlučivost 2a: koristite uslužni program aspnet_regiis ASP.NET instalacije sadrže uslužni program, aspnet_regiis. exe. Ovaj uslužni program omogućuje ASP.NET sučelje s IIS-om za izvođenje konfiguracija potrebnih za pokretanje upravljane aplikacije. Jedna od tih konfiguracija stvara potrebne tipke u košnici registra kako bi se omogućilo postojanost automatski generiranih tipki stroja. Prvo morate odrediti koju ćete zbirku aplikacija koristiti. To se može odrediti pomoću uslužnog programa inetmgr koji je obuhvaćen IIS-om. Odaberite svoje web-mjesto u prikazu stabla na lijevoj strani, desnom tipkom miša upravljajte website, a zatim kliknite Napredne postavke. Dijaloški okvir koji će se pojaviti prikazuje naziv grupe aplikacija. Advanced Settings Da biste skele odgovarajuće ključeve registra za ASP.NET 4,0 grupe aplikacija, slijedite ove korake:

    1. Otvorite administratorski naredbeni redak.

    2. Pronađite odgovarajući direktorij, ovisno o tome je li vaš skup aplikacija 32-bitni ili 64-bitni:

      • 32-bitni skup aplikacija: CD/d%windir%\Microsoft.NET\Framework\v4.0.30319

      • 64-bitni skup aplikacija: CD/d%windir%\Microsoft.NET\Framework64\v4.0.30319

    3. Premjestite se u direktorij, upišite sljedeću naredbu, a zatim pritisnite tipku ENTER:

      aspnet_regiis-ga "IIS APPPOOL\app-pool-name"

    Ako je skup aplikacija ASP.NET 2,0 ili 3,5 skup aplikacija, slijedite ove korake:

    1. Otvorite administratorski naredbeni redak.

    2. Pronađite odgovarajući direktorij, ovisno o tome je li vaš skup aplikacija 32-bitni ili 64-bitni:

      • 32-bitni skup aplikacija: CD/d%windir%\Microsoft.NET\Framework\v2.0.50727

      • 64-bitni skup aplikacija: CD/d%windir%\Microsoft.NET\Framework64\v2.0.50727

    3. Premjestite se u direktorij, upišite sljedeću naredbu, a zatim pritisnite tipku ENTER:

      aspnet_regiis-ga "IIS APPPOOL\app-pool-name"

    Na primjer, ako je vaš skup aplikacija pod imenom Moja aplikacija bazen (kao na prethodnoj slici), pokrenite sljedeću naredbu:

    aspnet_regiis-ga "IIS Apppool\moja aplikacija bazen" Note Servisi sustava APPHOSTSVC i možda će se morati pokrenuti za aspnet_regiis uslužni program za pravilno rješavanje naziva IIS APPPOOL \ *.

  • Rezolucija 2b: stvorite eksplicitni < machineKey > element Dodavanjem eksplicitnog < machineKey > elementa aplikacije web. config datoteka, Developer kaže ASP.NET ne koriste automatski generirani kriptografski ključ. Pogledajte dodatak A za upute o stvaranju elementa < machineKey >.

Uzrok 3: skup aplikacija konfiguriran pomoću LoadUserProfile = FALSE

Ako je skup aplikacija pokrenut s prilagođenim identitetom, IIS možda nije učitan korisnički profil za identitet. To je nuspojava stvaranje HKCU registra nedostupan za ASP.NET da se zadržavaju automatski generira < machineKey >. Stoga će novi automatski generirani ključ biti kreiran svaki put kada se aplikacija ponovno pokrene. Dodatne informacije potražite u odjeljku korisnički profil na Microsoftovu web-mjestu.

  • Razlučivost 3A: koristite uslužni program aspnet_regiis Upute za to su iste kao i razlučivost 2a. Pogledajte taj odjeljak za više informacija.

  • Rezolucija 3B: koristite eksplicitno < machineKey > Dodavanjem eksplicitnog < machineKey > elementa aplikacije web. config datoteka, Developer kaže ASP.NET ne koriste automatski generirani kriptografski ključ. Pogledajte dodatak A za upute o stvaranju elementa < machineKey >.

  • Rezolucija 3c: ručno pružanje potrebnih HKCU ključeva registra Ako ne možete pokrenuti uslužni program aspnet_regiis, možete koristiti skriptu Windows PowerShell za dodjelu odgovarajućih ključeva registra u HKCU. Za više informacija pogledajte dodatak B .

  • Razlučivost 3D: postavljanje LoadUserProfile = True za ovu skupu aplikacija Također možete omogućiti učitavanje korisničkog profila unutar ove grupe aplikacija. To čini košnicu registra HKCU, privremenu mapu i druga korisnička mjesta za pohranu dostupne za aplikaciju. Međutim, to može uzrokovati povećanu upotrebu diska ili memorije za radničke procese. Dodatne informacije o omogućivanju ove postavke potražite u elementu .

Uzrok 4: svojstvo Page. ViewStateUserKey ima netočnu vrijednost

Programeri softvera mogu odlučiti da koriste stranicu. ViewStateUserKey za dodavanje zaštite od krivotvorenja zahtjeva na web-mjestu web-lokacije. Ako upotrebljavate stranicu. ViewStateUserKey , obično se postavlja na vrijednost poput korisničkog imena trenutnog korisnika ili identifikatora korisničke sesije. Predlošci projekata za WebForms aplikacije u Microsoft Visual Studio 2012 i novije verzije sadrže uzorke koji koriste ovo svojstvo. Prikaz stranice svojstva. ViewStateUserKey na web-mjestu Microsoft Developer Network (MSDN) za više informacija. Ako je navedeno svojstvo Viewstateuserkey , njegova vrijednost se nalazi u programu _ = viewstate u vrijeme generacije. Kada se potrošeno polje web-stajališta poslužitelja, poslužitelj provjerava svojstvo Viewstateuserkey trenutne stranice i provjerava je li vrijednost korištena za generiranje polja web-točke viewstate. Ako se vrijednosti ne podudaraju, zahtjev se odbacuje kao potencijalno zlonamjeran. Primjer neuspjeha koji se odnosi na ViewStateUserKey bio bi klijent koji ima dvije otvorene kartice u pregledniku. Klijent je prijavljen kao korisnik A, a na prvoj kartici prikazuje se stranica s web-stranicom za Prikaz koji sadrži "korisnik a". Na drugoj kartici klijent se prijavljuje i zatim se ponovno prijavljuje kao korisnik B. Klijent se vraća na prvu karticu i podnosi obrazac. Svojstvo Viewstateuserkey može sadržavati "user B" (jer je to ono što klijentova provjera autentičnosti kolačić kaže). Međutim, polje polja VIEWSTATE koje je klijent podnio sadrži "korisnik A". Ova nepodudarnost uzrokuje neuspjeh.

  • Rezolucija 4a: Provjerite je li ViewStateUserKey ispravno postavljen Ako vaša aplikacija koristi svojstvo Viewstateuserkey , provjerite je li vrijednost svojstva jednaka i kada se stvara stanje prikaza i kada se troši. Ako upotrebljavate trenutno korisničko ime prijavljenog korisnika, provjerite je li korisnik još uvijek prijavljen i nije li se identitet korisnika promijenio u vrijeme knjiženja. Ako koristite identifikator sesije trenutnog korisnika, provjerite je li sesija istekla. Ako se nalazite u poljoprivrednom okruženju, Provjerite podudaraju li se < machineKey > elementi. Pogledajte dodatak A za upute o stvaranju tih elemenata.

Dodatak A: kako generirati element < machineKey >

Sigurnosno upozorenje Postoje mnoge web stranice koje će generirati < machineKey > element za vas s klikom na gumb. Nikada nemojte koristiti element < machineKey > koji ste dobili s jednog od tih web-mjesta. Nemoguće je znati jesu li ovi ključevi stvoreni sigurno ili ako se snimaju u tajnu bazu podataka. Možete koristiti samo < machineKey > konfiguracijske elemente koje ste sami stvorili.

Da biste generirali < machineKey > element, možete koristiti sljedeću skriptu za Windows PowerShell :

# Generates a <machineKey> element that can be copied + pasted into a Web.config file.
function Generate-MachineKey {
  [CmdletBinding()]
  param (
    [ValidateSet("AES", "DES", "3DES")]
    [string]$decryptionAlgorithm = 'AES',
    [ValidateSet("MD5", "SHA1", "HMACSHA256", "HMACSHA384", "HMACSHA512")]
    [string]$validationAlgorithm = 'HMACSHA256'
  )
  process {
    function BinaryToHex {
        [CmdLetBinding()]
        param($bytes)
        process {
            $builder = new-object System.Text.StringBuilder
            foreach ($b in $bytes) {
              $builder = $builder.AppendFormat([System.Globalization.CultureInfo]::InvariantCulture, "{0:X2}", $b)
            }
            $builder
        }
    }
    switch ($decryptionAlgorithm) {
      "AES" { $decryptionObject = new-object System.Security.Cryptography.AesCryptoServiceProvider }
      "DES" { $decryptionObject = new-object System.Security.Cryptography.DESCryptoServiceProvider }
      "3DES" { $decryptionObject = new-object System.Security.Cryptography.TripleDESCryptoServiceProvider }
    }
    $decryptionObject.GenerateKey()
    $decryptionKey = BinaryToHex($decryptionObject.Key)
    $decryptionObject.Dispose()
    switch ($validationAlgorithm) {
      "MD5" { $validationObject = new-object System.Security.Cryptography.HMACMD5 }
      "SHA1" { $validationObject = new-object System.Security.Cryptography.HMACSHA1 }
      "HMACSHA256" { $validationObject = new-object System.Security.Cryptography.HMACSHA256 }
      "HMACSHA385" { $validationObject = new-object System.Security.Cryptography.HMACSHA384 }
      "HMACSHA512" { $validationObject = new-object System.Security.Cryptography.HMACSHA512 }
    }
    $validationKey = BinaryToHex($validationObject.Key)
    $validationObject.Dispose()
    [string]::Format([System.Globalization.CultureInfo]::InvariantCulture,
      "<machineKey decryption=`"{0}`" decryptionKey=`"{1}`" validation=`"{2}`" validationKey=`"{3}`" />",
      $decryptionAlgorithm.ToUpperInvariant(), $decryptionKey,
      $validationAlgorithm.ToUpperInvariant(), $validationKey)
  }
}

Za ASP.NET 4,0 aplikacije, možete samo nazvati generirati-machinekey bez parametara za generiranje < machinekey > element kako slijedi:

PS> Generate-MachineKey
<machineKey decryption="AES" decryptionKey="..." validation="HMACSHA256" validationKey="..." />

ASP.NET 2,0 i 3,5 aplikacije ne podržavaju HMACSHA256. Umjesto toga možete odrediti SHA1 za generiranje kompatibilnog elementa < machineKey > kako slijedi:

PS> Generate-MachineKey -validation sha1
<machineKey decryption="AES" decryptionKey="..." validation="SHA1" validationKey="..." />

Čim imate < machineKey > element, možete ga staviti u datoteku web. config. Element < machineKey > valjan je samo u datoteci web. config u korijenu aplikacije i nije valjan na razini podmape.

<configuration>
  <system.web>
    <machineKey ... />
  </system.web>
</configuration>

Za potpuni popis podržanih algoritama, pokrenite pomoć za generiranje-MachineKey iz Windows PowerShell Prompt.

Dodatak B: Dodjeljivanje registra za ustrajati automatski generirane tipke

Prema zadanim postavkama, budući da su automatski generirani ključevi ASP. NETs u HKCU registru, te tipke mogu biti izgubljene ako korisnički profil nije učitan u IIS radničke procese, a zatim se skup aplikacija reciklira. Ovaj scenarij može utjecati na usluge zajedničke hosting koje izvode aplikacije za korisnike kao standardne Windows korisničke račune. Da biste zaobišli tu situaciju, ASP.NET omogućuje kontinuirano automatsko generirane tipke u HKLM registru umjesto HKCU registra. To se obično izvodi pomoću uslužnog programa aspnet_regiis (pogledajte upute u odjeljku "rezolucija 2a: koristite uslužni program aspnet_regiis"). Međutim, za administratore koji ne žele pokrenuti ovaj uslužni program, sljedeći Windows PowerShell skripta može se koristiti umjesto toga:

# Provisions the HKLM registry so that the specified user account can persist auto-generated machine keys.
function Provision-AutoGenKeys {
  [CmdletBinding()]
  param (
    [ValidateSet("2.0", "4.0")]
    [Parameter(Mandatory = $True)]
    [string] $frameworkVersion,
    [ValidateSet("32", "64")]
    [Parameter(Mandatory = $True)]
    [string] $architecture,
    [Parameter(Mandatory = $True)]
    [string] $upn
  )
  process {
    # We require administrative permissions to continue.
    if (-Not (new-object System.Security.Principal.WindowsPrincipal([System.Security.Principal.WindowsIdentity]::GetCurrent())).IsInRole([System.Security.Principal.WindowsBuiltInRole]::Administrator)) {
        Write-Error "This cmdlet requires Administrator permissions."
        return
    }
    # Open HKLM with an appropriate view into the registry
    if ($architecture -eq "32") {
        $regView = [Microsoft.Win32.RegistryView]::Registry32;
    } else {
        $regView = [Microsoft.Win32.RegistryView]::Registry64;
    }
    $baseRegKey = [Microsoft.Win32.RegistryKey]::OpenBaseKey([Microsoft.Win32.RegistryHive]::LocalMachine, $regView)
    # Open ASP.NET base key
    if ($frameworkVersion -eq "2.0") {
        $expandedVersion = "2.0.50727.0"
    } else {
        $expandedVersion = "4.0.30319.0"
    }
    $aspNetBaseKey = $baseRegKey.OpenSubKey("SOFTWARE\Microsoft\ASP.NET\$expandedVersion", $True)
    # Create AutoGenKeys subkey if it doesn't already exist
    $autoGenBaseKey = $aspNetBaseKey.OpenSubKey("AutoGenKeys", $True)
    if ($autoGenBaseKey -eq $null) {
        $autoGenBaseKey = $aspNetBaseKey.CreateSubKey("AutoGenKeys")
    }
    # Get the SID for the user in question, which will allow us to get his AutoGenKeys subkey
    $sid = (New-Object System.Security.Principal.WindowsIdentity($upn)).User.Value
    # SYSTEM, ADMINISTRATORS, and the target SID get full access
    $regSec = New-Object System.Security.AccessControl.RegistrySecurity
    $regSec.SetSecurityDescriptorSddlForm("D:P(A;OICI;GA;;;SY)(A;OICI;GA;;;BA)(A;OICI;GA;;;$sid)")
    $userAutoGenKey = $autoGenBaseKey.OpenSubKey($sid, $True)
    if ($userAutoGenKey -eq $null) {
        # Subkey didn't exist; create and ACL appropriately
        $userAutoGenKey = $autoGenBaseKey.CreateSubKey($sid, [Microsoft.Win32.RegistryKeyPermissionCheck]::Default, $regSec)
    } else {
        # Subkey existed; make sure ACLs are correct
        $userAutoGenKey.SetAccessControl($regSec)
    }
  }
}

U sljedećem primjeru prikazan je način dodjele odgovarajućih stavki registra HKLM-a za skup aplikacija koji se izvodi kao korisnik, example@contoso.com (ovo je UPN za korisnički račun sustava Windows). Ovaj skup aplikacija je 32-bitni program koji izvodi CLR v 2.0 (ASP.NET 2,0 ili 3,5).

PS> Provision-AutoGenKeys -FrameworkVersion 2.0 -Architecture 32 -UPN "example@contoso.com"

Ako je skup aplikacija umjesto 64-bitni skup aplikacija koji izvodi CLR v 4.0 (ASP.NET 4,0 ili 4,5), naredba je kako slijedi:

PS> Provision-AutoGenKeys -FrameworkVersion 4.0 -Architecture 64 -UPN "example@contoso.com"

Iako su automatski generirani ključevi pohranjeni u HKLM-u, potključ registra koji sadrži tajni kriptografski materijal svakog korisničkog računa dodaje se na popis za kontrolu pristupa (ACL) tako da šifrirani materijal ne može čitati drugi korisnički računi.

Dodatak C: šifriranjem elementa < machineKey > u konfiguracijskim datotekama

Administratori poslužitelja možda ne žele vrlo osjetljive informacije kao što je < machineKey > ključni materijal da bi bio netekst obrazac u konfiguracijskim datotekama. Ako je to slučaj, administratori mogu odlučiti iskoristiti značajku .NET Framework poznatu kao "zaštićena konfiguracija". Ova značajka omogućuje šifriranje određenih sekcija. config datoteka. Ako se sadržaj tih konfiguracijskih datoteka ikada otkrije, sadržaj tih sekcija i dalje će ostati tajni. Možete pronaći kratak pregled zaštićene konfiguracije na web-mjestu MSDN. Također sadrži tutorial o tome kako zaštititi < connectionStrings > i < machineKey > elementi web. config datoteke.

Potrebna vam je dodatna pomoć?

Proširite svoje vještine
Istražite osposobljavanje
Prvi koristite nove značajke
Pridružite se Microsoft Insidere

Jesu li ove informacije bile korisne?

Hvala vam na povratnim informacijama!

Hvala vam na povratnim informacijama! Čini se da bi vam pomoglo kad bismo vas povezali s nekim od naših agenata podrške za Office.

×