Pierakstīties, izmantojot Microsoft
Pierakstīties vai izveidot kontu
Sveicināti!
Atlasīt citu kontu.
Jums ir vairāki konti
Izvēlieties kontu, ar kuru vēlaties pierakstīties.

Kas ir skata stāvoklis?

Skata stāvoklis ir informācija, kas ir apaļas tripped starp WebForms (aspx) lapas ASP.NET lietojumprogrammā. HTML uzcenojums _: VIEWSTATE ir līdzīgs šim:

< ievades tips = "slēpts" name = "_ s VIEWSTATE" ID = "_" VIEWSTATE "value ="... "/>Viens piemērs vienumam, kas varētu būt saglabāts laukā _ VIEWSTATE, ir pogas vadīklas teksts. Ja lietotājs noklikšķina uz pogas, Button_Click notikumu apdarinātājs varēs izvērst pogas tekstu no lauka skata statuss. Skatiet tēmu ASP.NET skata stāvokļa pārskats Microsoft izstrādātāju tīkla (MSDN) tīmekļa vietnē, lai iegūtu daudz detalizētāku pārskatu par ASP.NET skatījuma stāvokli. Ņemot vērā, ka lauks _ ' VIEWSTATE satur svarīgu informāciju, kas tiek izmantota, lai rekonstruētu lapu atpakaļgaitā, pārliecinieties, vai uzbrucējs nevar iejaukties šajā laukā. Ja uzbrucējs iesniedzis ļaunprātīgu _ s VIEWSTATE lietderīgā slodze, uzbrucējs potenciāli var triks lietojumprogrammu veikt darbību, kas citādi nebūtu izpildīts. Lai novērstu šāda veida manipulācijas uzbrukumu, lauks _ VIEWSTATE ir aizsargāts ar ziņojumu autentifikācijas kodu (MAC). ASP.NET validē MAC, kas ir iesniegta kopā ar "_ VIEWSTATE lietderīgo slodzi, kad atpakaļceļa notiek. Atslēga, kas tiek izmantota, lai aprēķinātu MAC, ir norādīta lietojumprogrammas Web. config faila elementā . Tā kā uzbrucējs nevar uzminēt < machineKey > elementa saturu, uzbrucējs nevar nodrošināt derīgu MAC, ja uzbrucējs mēģina aizraut ar _ "VIEWSTATE lietderīgo slodzi. ASP.NET noteiks, ka nav nodrošināts derīgs MAC, un ASP.NET noraidīs ļaunprātīgo pieprasījumu.

Kas izraisa MAC validācijas kļūdas?

MAC validācijas kļūda būs līdzīgs šim piemēram:

Servera kļūda lietojumprogrammā '/'. Viewstate MAC validācija neizdevās. Ja šo lietojumprogrammu vieso Web fermas vai klastera, pārliecinieties, vai < machineKey > konfigurācija norāda to pašu validationKey un validācijas algoritmu. Automātisko ģenerēšana nevar izmantot klasterī. Apraksts: pašreizējā tīmekļa pieprasījuma izpildes laikā radās neapstrādāts izņēmums. Lūdzu, pārskatiet steka izsekošanas datus, lai iegūtu papildinformāciju par kļūdu un tā izcelsmi kodā. Izņēmuma detaļas: System. Web. HttpException: viewstate MAC validācija neizdevās. Ja šo lietojumprogrammu vieso Web fermas vai klastera, pārliecinieties, vai < machineKey > konfigurācija norāda to pašu validationKey un validācijas algoritmu. Automātisko ģenerēšana nevar izmantot klasterī. Avota kļūda: [nav atbilstošu avota rindu] Avota fails:... Līnija: 0 Steka trase: [ViewStateException: nederīgs viewstate. Klienta IP::: 1 Osta: 40653 Referer: http://localhost:40643/MyPage.aspx Ceļš:/MyPage.aspx Lietotāja aģents: Mozilla/5.0 (saderīgs; MSIE 10,0; Windows NT 6,2; WOW64 Trident/6.0) ViewState:...] [HttpException (0x80004005): viewstate MAC validācija neizdevās. Ja šo lietojumprogrammu vieso Web fermas vai klastera, pārliecinieties, vai < machineKey > konfigurācija norāda to pašu validationKey un validācijas algoritmu. Automātisko ģenerēšana nevar izmantot klasterī. Papildinformāciju skatiet http://go.microsoft.com/fwlink/?LinkID=314055.] System. Web. UI. ViewStateException. ThrowError (izņēmums iekšējā virkne persistedState, virkne errorPageMessage, Boolean macValidationError) + 190 System. Web. UI. ViewStateException. ThrowMacValidationError (izņēmums iekšējā virkne persistedState) + 46 System. Web. UI. ObjectStateFormatter. Deserialize (virkne inputString, mērķa mērķis) + 861 System. Web. UI. ObjectStateFormatter. System. Web. UI. IStateFormatter2. Deserialize (string serializedState, mērķa mērķis) + 51 System. Web. UI. util. DeserializeWithAssert (IStateFormatter2 formatter, virkne serializedState, mērķa mērķis) + 67 System. Web. UI. HiddenFieldPageStatePersister. Load () + 444 System. Web. UI. Page. LoadPageStateFromPersistenceMedium () + 368 System. Web. UI. Page. LoadAllState () + 109 System. Web. UI. Page. ProcessRequestMain (Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) + 7959 System. Web. UI. Page. ProcessRequest (Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) + 429 System. Web. UI. Page. ProcessRequest () + 125 System. Web. UI. Page. Processrequestwithnoaizstāvētu (HttpContext konteksts) + 48 System. Web. UI. Page. ProcessRequest (HttpContext konteksts) + 234 ASP. mypage_aspx. ProcessRequest (HttpContext konteksts)...: 0 System. Web. CallHandlerExecutionStep. System. Web. HttpApplication. IExecutionStep. Execute () + 1300 System. Web. HttpApplication. ExecuteStep (IExecutionStep darbība, Boolean & completedSynchronously) + 140

1. iemesls: tīmekļa lietojumprogramma darbojas fermas (vairāku serveru vidē)

ASP.NET automātiski ģenerē šifrēšanas atslēgu katrai lietojumprogrammai un saglabā atslēgu HKCU reģistra stropā. Šī automātiski ģenerēta atslēga tiek izmantota, ja nav skaidri < machineKey > elements lietojumprogrammas konfigurācijā. Tomēr šī automātiski ģenerētā atslēga ir lokālā datorā, kurā ir izveidota atslēga, ja šis scenārijs izraisa lietojumprogrammas, kas darbojas fermā. Katrs fermas serveris radīs savu lokālo atslēgu, un neviens no fermas serveriem vienosies par to, kuru atslēgu izmantot. Rezultāts ir tāds, ka, ja viens serveris ģenerē _ VIEWSTATE lietderīgā slodze, ko patērē cits serveris, patērētājs pieredzēs MAC validācijas kļūmi.

  • Rezolūcija 1a: izveidot skaidru < machineKey > elements Pievienojot skaidru < machineKey > elementu lietojumprogrammas failā Web. config, Izstrādātājs norāda, ASP.NET neizmantot automātiski ģenerētu kriptogrāfijas atslēgu. Skatiet pielikumu a instrukcijas par to, kā ģenerēt < machineKey > elements. Kad šis elements ir pievienots failam Web. config, izvietot lietojumprogrammu katram serverim fermā. Ņemiet vērā Daži Web hostinga pakalpojumi, piemēram, Microsoft Azure tīmekļa vietnes, veic darbības, lai sinhronizētu katras lietojumprogrammas automātiski izveidoto atslēgu savos aizmugurgala serveros. Tas ļauj lietojumprogrammām, kas nav norādītas skaidri < machineKey > elements turpināt darbu šajās vidēs, pat tad, ja lietojumprogramma darbojas fermā. Ja jūsu lietojumprogramma darbojas trešās puses viesošanas pakalpojumā, lūdzu, sazinieties ar viesošanas pakalpojumu sniedzēju, lai noteiktu, vai šī situācija attiecas uz jums.

  • Izšķirtspēja 1b: iespējot afinitāte slodzes līdzsvarotāja Ja vietnes darbojas aiz slodzes līdzsvarotāja, var iespējot servera radniecība īslaicīgi apiet problēmu. Tas palīdz nodrošināt, ka jebkurš klients tikai mijiedarbojas ar vienu fizisko serveri aiz slodzes līdzsvarotāja, lai visas kriptogrāfijas vērtīgās slodzes gan ģenerē un patērē tas pats serveris. To nevajadzētu uzskatīt par ilglaicīgu problēmas risinājumu. Pat tad, ja servera radniecība ir iespējota, lielākā slodze balancers būs novirzīt klientu uz citu fizisko serveri, ja sākotnējais serveris, uz kuru slodze balancers bija padarīt radniecīgus iet bezsaistē. Tas izraisa jaunu serveri noraidīt kriptogrāfijas vērtstās (piemēram, _ ' VIEWSTATE, veidlapu autentifikācijas biļetes, MVCs anti-viltošanu žetonus un citus pakalpojumus), kas klientam pašlaik ir. Izmantojot skaidru < machineKey > elementu un pārceļot pieteikumu būtu jādod priekšroka pār iespējojot servera radniecība.

2. iemesls: darbinieka process izmanto IIS 7,0 lietojumprogrammu pūla identitāte

Interneta informācijas pakalpojumi (IIS) 7,0 (Windows Vista, Windows Server 2008) ieviesta lietojumprogrammu pūla identitāte, jaunu izolācijas mehānismu, kas palīdz nodrošināt lielāku drošību serveriem, kas darbojas ASP.NET lietojumprogrammas. Tomēr vietnes, kas darbojas saskaņā ar lietojumprogrammu pūla identitāte nav piekļuves HKCU reģistru. Tas ir, ja ASP.NET Runtime veikali tās automātiski ģenerē < machineKey > atslēgas. Rezultāts ir tāds, ka ASP.NET nevar pastāvēt automātiski ģenerē atslēgu, kad lietojumprogrammu pūls ir atiestatīts. Tādēļ katru reizi, kad tiek atjaunota w3wp. exe, tiek ģenerēts jaunu pagaidu atslēgu. Ņemiet vērā Šī nav problēma IIS 7,5 (Windows 7, Windows Server 2008 R2) un jaunākas versijas. Šīs versijas IIS ASP.NET var saglabāties tās automātiski ģenerē atslēgas citā vietā, kas izdzīvo lietojumprogrammu pūla atiestata.

  • 2. risinājums: izmantojiet utilītu aspnet_regiis ASP.NET instalācijās ir utilīta, aspnet_regiis. exe. Šī utilīta ļauj ASP.NET interfeisu ar IIS, lai veiktu konfigurācijas, kas nepieciešamas, lai palaistu pārvaldīto lietojumprogrammu. Viena no šīm konfigurācijām izveido nepieciešamos atslēgas reģistra stropā, lai iespējotu automātiski ģenerētu mašīnu atslēgu noturību. Pirmkārt, jums ir noteikt, kura lietojumprogrammu pūla jūsu vietā izmanto. To var noteikt, izmantojot utilītu inetmgr , kas ir iekļauta programmā IIS. Atlasiet savu vietni koka skatā pa kreisi, ar peles labo pogu noklikšķiniet uz pārvaldīt website, un pēc tam noklikšķiniet uz Papildu iestatījumi. Parādītajā dialoglodziņā tiks parādīts lietojumprogrammas pūla nosaukums. Papildu iestatījumi Lai sastatnēm atbilstošo reģistra atslēgas ASP.NET 4,0 lietojumprogrammu pūls, rīkojieties šādi:

    1. Atveriet administratora komandu uzvedni.

    2. Atrodiet atbilstošo direktoriju, atkarībā no tā, vai jūsu lietojumprogrammu pūls ir 32 bitu vai 64 bitu:

      • 32 bitu lietojumprogrammu pūls: CD/d%windir%\Microsoft.NET\Framework\v4.0.30319

      • 64 bitu lietojumprogrammu pūls: CD/d%windir%\Microsoft.NET\Framework64\v4.0.30319

    3. Pārvietot uz direktoriju, ierakstiet šādu komandu un pēc tam nospiediet taustiņu ENTER:

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

    Ja lietojumprogrammu pūla ir ASP.NET 2,0 vai 3,5 lietojumprogrammu pūls, rīkojieties šādi:

    1. Atveriet administratora komandu uzvedni.

    2. Atrodiet atbilstošo direktoriju, atkarībā no tā, vai jūsu lietojumprogrammu pūls ir 32 bitu vai 64 bitu:

      • 32 bitu lietojumprogrammu pūls: CD/d%windir%\Microsoft.NET\Framework\v2.0.50727

      • 64 bitu lietojumprogrammu pūls: CD/d%windir%\Microsoft.NET\Framework64\v2.0.50727

    3. Pārvietot uz direktoriju, ierakstiet šādu komandu un pēc tam nospiediet taustiņu ENTER:

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

    Piemēram, ja lietojumprogrammas pūls ir nosaukts manu programmu pūls (kā iepriekšējā attēlā), izpildiet šādu komandu:

    aspnet_regiis-ga "IIS APPPOOL\My app pūls" Ņemiet vērā Sistēmas pakalpojumi APPHOSTSVC un bija var būt darbojas aspnet_regiis utilītu, lai novērstu IIS APPPOOL \ * nosaukumu atbilstoši.

  • Rezolūcija 2B: izveidot skaidru < machineKey > elements Pievienojot skaidru < machineKey > elementu lietojumprogrammas failā Web. config, Izstrādātājs norāda, ASP.NET neizmantot automātiski ģenerētu kriptogrāfijas atslēgu. Skatiet pielikumu a instrukcijas par to, kā ģenerēt < machineKey > elements.

3. iemesls: lietojumprogrammu pūls ir konfigurēts, izmantojot LoadUserProfile = FALSE

Ja lietojumprogrammu pūla darbojas ar pielāgotu identitāti, IIS, iespējams, nav ielādēts identitātes lietotāja profilu. Tas ir blakus efekts padarīt HKCU reģistra nav pieejama ASP.NET pastāvēt automātiski ģenerē < machineKey >. Tādēļ automātiski ģenerē jaunu atslēgu tiks izveidots katru reizi, kad lietojumprogramma tiek restartēts. Papildinformāciju skatiet Microsoft vietnes sadaļā lietotāja profils .

  • Izšķirtspēja 3a: izmantojiet utilītu aspnet_regiis Šīs instrukcijas ir tādas pašas kā Rezolūcijai 2a. Skatiet šo sadaļu, lai iegūtu papildinformāciju.

  • Resolution 3B: Izmantojiet skaidru < machineKey > Pievienojot skaidru < machineKey > elementu lietojumprogrammas failā Web. config, Izstrādātājs norāda, ASP.NET neizmantot automātiski ģenerētu kriptogrāfijas atslēgu. Skatiet pielikumu a instrukcijas par to, kā ģenerēt < machineKey > elements.

  • Izšķirtspēja 3C: nepieciešamo HKCU reģistra atslēgu nodrošināšana manuāli Ja nevarat palaist utilītu aspnet_regiis, varat izmantot Windows PowerShell skriptu nodrošināt atbilstošās reģistra atslēgas HKCU. Plašāku informāciju skatīt pielikumā B .

  • Izšķirtspēja 3D: iestatīt LoadUserProfile = TRUE šo lietojumprogrammu pūls Varat arī iespējot lietotāja profila ielādi šajā lietojumprogrammu pūlā. Tas padara HKCU reģistra stropu, pagaidu mapi un citas lietotājam specifiskas krātuves vietas, kas pieejamas lietojumprogrammai. Tomēr tas var izraisīt palielinātu diska vai atmiņas lietojums darbinieka process. Skatiet elementu , lai iegūtu papildinformāciju par to, kā iespējot šo iestatījumu.

4. iemesls: rekvizīts Page. ViewStateUserKey ir nepareiza vērtība

Programmatūras izstrādātāji var nolemt izmantot šo lapu. ViewStateUserKey , lai pievienotu vairākvietņu pieprasījuma aizsardzību pret viltošanu laukā _ viewstate. Ja izmantojat rekvizītu Page. ViewStateUserKey , tā parasti tiek iestatīta kā pašreizējā lietotāja lietotājvārds vai lietotāja sesijas identifikators. Projekta veidnes WebForms lietojumprogrammas Microsoft Visual Studio 2012 un jaunākas versijas ietver paraugi, kas izmanto šo rekvizītu. Lai iegūtu papildinformāciju, skatiet lapu. ViewStateUserKey rekvizītu tēmu Microsoft izstrādātāju tīkla (MSDN) tīmekļa vietnē. Ja rekvizīts Viewstateuserkey ir norādīts, tā vērtība tiek ierakstīta _ "viewstate izveides laikā. Kad tiek patērēts lauks _ VIEWSTATE, serveris pārbauda pašreizējo lapas Viewstateuserkey rekvizītu un validē to pret vērtību, kas tika izmantota, lai ĢENERĒTU lauku _ viewstate. Ja vērtības nesakrīt, pieprasījums tiek noraidīts kā potenciāli ļaunprātīgs. ViewStateUserKey saistītās kļūmes piemērs būtu klients, kuram ir divas cilnes atvērt pārlūkprogrammā. Klients ir pieteicies kā lietotājs A, un pirmajā cilnē lapa tiek atveidota ar _ ' VIEWSTATE, kura Viewstateuserkey rekvizīts satur "User A." Otrajā cilnē Klients piesakās un pēc tam žurnālus atpakaļ kā lietotājs B Klients atgriežas pirmajā cilnē un iesniedz veidlapu. Viewstateuserkey rekvizīts var saturēt "User B" (jo tas ir tas, ko klienta autentifikācijas cookie saka). Tomēr lauks _ VIEWSTATE, kuru klients ir iesniedzis, satur "lietotājs A". Šī neatbilstība izraisa kļūmi.

  • Izšķirtspēja 4a: Pārbaudiet, vai ir iestatīts pareizi ViewStateUserKey Ja lietojumprogramma izmanto rekvizītu Viewstateuserkey , pārbaudiet, vai rekvizīta vērtība ir tāds pats gan skatot valsts tiek ģenerēts un kad tas tiek patērēts. Ja izmantojat pašreizējo pieteicies lietotāja lietotājvārdu, pārliecinieties, vai lietotājs joprojām ir pieteicies un lietotāja identitāte nav mainījusies atpakaļpasta laikā. Ja izmantojat pašreizējā lietotāja sesijas identifikatoru, pārliecinieties, vai sesijai nav iestājies taimauts. Ja jūs izmantojat fermas vidē, pārliecinieties, vai < machineKey > elementi atbilst. Norādījumus par to, kā ģenerēt šos elementus, skatiet pielikumā .

Pielikums A: kā izveidot < machineKey > elements

Drošības brīdinājums Ir daudzas tīmekļa vietnes, kas radīs < machineKey > elements jums ar klikšķi uz pogas. Nekad neizmantojiet < machineKey > elements, ka jūs, kas iegūti no viena no šīm vietām. Nav iespējams zināt, vai šīs atslēgas ir droši radītas, vai arī tās tiek ierakstītas slepenā datubāzē. Jums vajadzētu tikai kādreiz izmantot < machineKey > konfigurācijas elementus, ko izveidojāt pats.

Lai ģenerētu < machineKey > elementu, varat izmantot šādu Windows PowerShell skriptu:

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

Par ASP.NET 4,0 pieteikumus, jūs varat zvanīt radīt-machinekey bez parametriem, lai radītu < machinekey > elements šādi:

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

ASP.NET 2,0 un 3,5 lietojumprogrammas neatbalsta HMACSHA256. Tā vietā varat norādīt SHA1 izveidot saderīgu < machineKey > elementu šādi:

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

Tiklīdz jums ir < machineKey > elements, varat ievietot to failā Web. config. < MachineKey > elements ir derīgs tikai failā Web. config jūsu lietojumprogrammas saknē un nav derīgs apakšmapju līmenī.

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

Pilnu atbalstīto algoritmu sarakstu, palaidiet palīdzību ģenerēt MachineKey no Windows PowerShell uzvedni.

Papildinājuma B: nodrošināšana reģistra pastāvēt automātiski ģenerē atslēgas

Pēc noklusējuma, jo ASP. NETs automātiski ģenerē atslēgas tiek saglabātas HKCU reģistrā, šie taustiņi var pazust, ja lietotāja profils nav ielādēts IIS darbinieka process un pēc tam lietojumprogrammu pūla pārstrādā. Šis scenārijs var ietekmēt koplietošanas viesošanas pakalpojumu sniedzēji, kas darbojas lietojumprogrammu pūli kā standarta Windows lietotāju konti. Lai novērstu šo situāciju, ASP.NET iespējo pastāvīgi automātiski ģenerē atslēgas HKLM reģistrā, nevis HKCU reģistrā. Parasti tas tiek veikts, izmantojot utilītu aspnet_regiis (skatiet norādījumus sadaļā "risinājums 2a: izmantojiet aspnet_regiis utilītu"). Tomēr administratoriem, kas nevēlas, lai palaistu šo utilītu, var izmantot šādu Windows PowerShell skriptu:

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

Šajā piemērā parādīts, kā nodrošināt atbilstošu HKLM reģistra ierakstus lietojumprogrammu pūls, kas darbojas kā lietotājs, example@contoso.com (tas ir UPN Windows lietotāja kontu). Šis lietojumprogrammu pūls ir 32 bitu lietojumprogrammu pūls, kas darbojas CLR v 2.0 (ASP.NET 2,0 vai 3,5).

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

Ja lietojumprogrammu pūla vietā ir 64 bitu lietojumprogrammu pūls, kas darbojas CLR v 4.0 (ASP.NET 4,0 vai 4,5), komanda ir šādi:

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

Pat tad, ja automātiski ģenerē atslēgas tiek glabāti HKLM, reģistra apakšatslēga, kas satur katra lietotāja konta slepenais šifrēšanas materiāls tiek pievienots piekļuves vadības saraksts (ACL), lai kriptogrāfisko materiālu nevar nolasīt citu lietotāju konti.

Pielikums C: šifrējot < machineKey > elementu konfigurācijas failos

Servera administratori var nevēlēties ļoti sensitīvu informāciju, piemēram, < machineKey > Key materiālu Bein PlainText Form konfigurācijas failos. Šādā gadījumā administratori var nolemt izmantot .NET Framework līdzeklis, kas pazīstams kā "aizsargāta konfigurācija". Šis līdzeklis ļauj šifrēt noteiktus. config failu sadaļas. Ja šo konfigurācijas failu saturs ir kādreiz izpausta, šīs sadaļas saturs joprojām paliks slepenībā. Jūs varat atrast īsu pārskatu par aizsargāto KONFIGURĀCIJU MSDN vietnē. Tajā ir arī apmācība par to, kā aizsargāt < connectionStrings > un < machineKey > elementi Web. config failā.

Nepieciešama papildu palīdzība?

Vēlaties vairāk opciju?

Izpētiet abonementa priekšrocības, pārlūkojiet apmācības kursus, uzziniet, kā aizsargāt ierīci un veikt citas darbības.

Kopienas palīdz uzdot jautājumus un atbildēt uz tiem, sniegt atsauksmes, kā arī saņemt informāciju no ekspertiem ar bagātīgām zināšanām.

Vai šī informācija bija noderīga?

Cik lielā mērā esat apmierināts ar valodas kvalitāti?
Kas ietekmēja jūsu pieredzi?
Nospiežot Iesniegt, jūsu atsauksmes tiks izmantotas Microsoft produktu un pakalpojumu uzlabošanai. Jūsu IT administrators varēs vākt šos datus. Paziņojums par konfidencialitāti.

Paldies par jūsu atsauksmēm!

×