Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
által Scott Mitchell
Egy ASP.NET alkalmazás általában egy Web.config fájlban tárolja a konfigurációs adatokat. Ezen információk némelyike bizalmas, és védelmet biztosít. Alapértelmezés szerint ez a fájl nem lesz kiszolgálva egy webhely látogatója számára, de egy rendszergazda vagy egy hacker hozzáférhet a webkiszolgáló fájlrendszeréhez, és megtekintheti a fájl tartalmát. Ebben az oktatóanyagban megtanuljuk, hogy ASP.NET 2.0 lehetővé teszi a bizalmas információk védelmét a Web.config fájl szakaszainak titkosításával.
Bevezetés
Az ASP.NET-alkalmazások konfigurációs információi általában egy xml-fájlban Web.config
találhatók. Az oktatóanyagok során néhány alkalommal frissítettük azokat Web.config
. Amikor az Northwind
létrehozza a Typed DataSetet, például a kapcsolati sztring információkat a rendszer automatikusan hozzáadta a Web.config
<connectionStrings>
szakaszban. Később, a Mesterlapok és a Webhelynavigáció oktatóanyagban manuálisan frissítettük Web.config
, és hozzáadtunk egy <pages>
elemet, amely azt jelzi, hogy a projekt összes ASP.NET lapjának a DataWebControls
Témát kell használnia.
Mivel Web.config
bizalmas adatokat, például kapcsolati sztringeket tartalmazhat, fontos, hogy a tartalom Web.config
biztonságban és elrejtve legyen a jogosulatlan megtekintők elől. Alapértelmezés szerint a .config
bővítményt tartalmazó fájlra irányuló HTTP-kéréseket a ASP.NET motor kezeli, amely az ilyen típusú lapot adja vissza, az 1. ábrán látható üzenet nem jelenik meg. Ez azt jelenti, hogy a látogatók nem tekinthetik meg a Web.config
fájl tartalmát úgy, hogy egyszerűen belépnek http://www.YourServer.com/Web.config a böngésző címsorába.
1. ábra: A böngészőben való látogatás Web.config
az ilyen típusú lap nem kézbesített üzenetét adja vissza (Ide kattintva megtekintheti a teljes méretű képet)
De mi a teendő, ha egy támadó talál egy másik biztonsági rést, amely lehetővé teszi számára a Web.config
fájl tartalmainak megtekintését? Mit tehet a támadó ezzel az információval, és milyen lépéseket tehet a bizalmas információk Web.config
további védelme érdekében? Szerencsére a legtöbb szakasz Web.config
nem tartalmaz bizalmas információkat. Milyen kárt okozhat a támadó, ha ismeri a ASP.NET lapok által használt alapértelmezett téma nevét?
Bizonyos Web.config
szakaszok azonban bizalmas információkat tartalmaznak, amelyek tartalmazhatnak kapcsolati sztringeket, felhasználóneveket, jelszavakat, kiszolgálóneveket, titkosítási kulcsokat stb. Ezek az információk általában a következő Web.config
szakaszokban találhatók:
<appSettings>
<connectionStrings>
<identity>
<sessionState>
Ebben az oktatóanyagban az ilyen bizalmas konfigurációs információk védelmére szolgáló technikákat tekintjük át. Amint látni fogjuk, a .NET-keretrendszer 2.0-s verziója tartalmaz egy védett konfigurációs rendszert, amely programozott módon titkosítja és visszafejti a kiválasztott konfigurációs szakaszokat.
Megjegyzés:
Ez az oktatóanyag egy ASP.NET-alkalmazásból származó adatbázishoz való csatlakozásra vonatkozó Microsoft-javaslatok áttekintésével fejeződik be. A kapcsolati sztringek titkosítása mellett segíthet a rendszer megerősítésében azáltal, hogy biztonságosan csatlakozik az adatbázishoz.
1. lépés: A ASP.NET 2.0 védett konfigurációs beállításainak felfedezése
ASP.NET 2.0 tartalmaz egy védett konfigurációs rendszert a konfigurációs információk titkosításához és visszafejtéséhez. Ide tartoznak a .NET-keretrendszer azon módszerei, amelyek a konfigurációs információk programozott titkosítására vagy visszafejtésére használhatók. A védett konfigurációs rendszer a szolgáltatói modellt használja, amellyel a fejlesztők kiválaszthatják, hogy milyen titkosítási implementációt használnak.
A .NET-keretrendszer két védett konfigurációs szolgáltatóval van ellátva:
-
RSAProtectedConfigurationProvider
- az aszimmetrikus RSA-algoritmust használja a titkosításhoz és a visszafejtéshez. -
DPAPIProtectedConfigurationProvider
- a Windows Data Protection API -t (DPAPI) használja a titkosításhoz és a visszafejtéshez.
Mivel a védett konfigurációs rendszer implementálja a szolgáltató tervezési mintáját, létrehozhatja saját védett konfigurációs szolgáltatóját, és csatlakoztathatja azt az alkalmazáshoz. Erről a folyamatról további információt a Védett konfigurációs szolgáltató implementálása című témakörben talál.
Az RSA- és DPAPI-szolgáltatók kulcsokat használnak a titkosítási és visszafejtési rutinjukhoz, és ezek a kulcsok gépi vagy felhasználói szinten tárolhatók. A gépi szintű kulcsok ideálisak olyan helyzetekben, amikor a webalkalmazás a saját dedikált kiszolgálón fut, vagy ha egy kiszolgálón több alkalmazásnak is meg kell osztania a titkosított információkat. A felhasználói szintű kulcsok biztonságosabbak a megosztott üzemeltetési környezetekben, ahol az ugyanazon a kiszolgálón lévő más alkalmazások nem tudják visszafejteni az alkalmazás védett konfigurációs szakaszait.
Ebben az oktatóanyagban a példáink a DPAPI-szolgáltatót és a gépszintű kulcsokat használják. Pontosabban a <connectionStrings>
szakasz titkosítását fogjuk megvizsgálni Web.config
-ban, bár a védett konfigurációs rendszer a legtöbb Web.config
szakasz titkosítására használható. A felhasználói szintű kulcsok vagy az RSA-szolgáltató használatával kapcsolatos információkért tekintse meg az oktatóanyag végén található További olvasások szakaszban található forrásokat.
Megjegyzés:
A RSAProtectedConfigurationProvider
és DPAPIProtectedConfigurationProvider
szolgáltatók a machine.config
fájlban vannak regisztrálva RsaProtectedConfigurationProvider
és DataProtectionConfigurationProvider
szolgáltatói nevekkel. A konfigurációs adatok titkosítása vagy visszafejtése során a tényleges típusnév (ésRsaProtectedConfigurationProvider
) helyett a megfelelő szolgáltatónevet kellDataProtectionConfigurationProvider
megadni (RSAProtectedConfigurationProvider
vagy DPAPIProtectedConfigurationProvider
) . A machine.config
fájlt a $WINDOWS$\Microsoft.NET\Framework\version\CONFIG
mappában találja.
2. lépés: Konfigurációs szakaszok programozott titkosítása és visszafejtése
Néhány sornyi kóddal titkosíthatunk vagy visszafejthetünk egy adott konfigurációs szakaszt egy megadott szolgáltató használatával. Ahogy hamarosan látni fogjuk, a kódnak programozott módon kell hivatkoznia a megfelelő konfigurációs szakaszra, meg kell hívnia a ProtectSection
vagy UnprotectSection
metódust, majd a Save
metódust a változások mentéséhez. A .NET-keretrendszer emellett egy hasznos parancssori segédprogramot is tartalmaz, amely képes a konfigurációs információk titkosítására és visszafejtésére. Ezt a parancssori segédprogramot a 3. lépésben fogjuk megvizsgálni.
A konfigurációs adatok programozott védelmének szemléltetéséhez hozzunk létre egy ASP.NET lapot, amely a szakasz <connectionStrings>
titkosítására és visszafejtésére Web.config
szolgáló gombokat tartalmaz.
Először nyissa meg a EncryptingConfigSections.aspx
lapot a AdvancedDAL
mappában. Húzzon egy TextBox-vezérlőt az eszközkészletből a Tervezőre, és állítsa a ID
tulajdonságát WebConfigContents
-re, a TextMode
tulajdonságát MultiLine
-ra, valamint a Width
és Rows
tulajdonságokat rendre 95%-ra és 15-re. Ez a TextBox-vezérlő megjeleníti a tartalom tartalmát Web.config
, így gyorsan megállapíthatjuk, hogy a tartalom titkosítva van-e vagy sem. Természetesen egy valódi alkalmazásban soha nem szeretné megjeleníteni a(z) Web.config
tartalmát.
A Szövegdoboz alá adjon hozzá két gombvezérlőt az alábbi nevekkel: EncryptConnStrings
és DecryptConnStrings
. Állítsa be a "Encrypt Connection Strings" és "Decrypt Connection Strings" szövegtulajdonságokat a kapcsolati sztringek titkosítására és visszafejtésére.
Ekkor a képernyőnek a 2. ábrához hasonlóan kell kinéznie.
2. ábra: Szövegdoboz és kétgombos webvezérlők hozzáadása a laphoz (ide kattintva megtekintheti a teljes méretű képet)
Ezután olyan kódot kell írnunk, amely betölti Web.config
és megjeleníti a szövegdoboz tartalmát a WebConfigContents
lap első betöltésekor. Adja hozzá a következő kódot a lap mögötti osztályhoz. Ez a kód hozzáad egy DisplayWebConfig
nevű metódust, és meghívja azt az Page_Load
eseménykezelőből, amikor Page.IsPostBack
státuszban False
.
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
'On the first page visit, call DisplayWebConfig method
If Not Page.IsPostBack Then
DisplayWebConfig()
End If
End Sub
Private Sub DisplayWebConfig()
'Reads in the contents of Web.config and displays them in the TextBox
Dim webConfigStream As StreamReader = _
File.OpenText(Path.Combine(Request.PhysicalApplicationPath, "Web.config"))
Dim configContents As String = webConfigStream.ReadToEnd()
webConfigStream.Close()
WebConfigContents.Text = configContents
End Sub
A DisplayWebConfig
metódus az File
osztály használatával nyitja meg az alkalmazásfájlt Web.config
, az StreamReader
osztályt a tartalma sztringbe való beolvasásához, az Path
osztály pedig a Web.config
fájl fizikai elérési útját hozza létre. Ez a három osztály mind megtalálható a System.IO
névtérben. Következésképpen hozzá kell adnia egy Imports``System.IO
utasítást a kód mögötti osztály elejére, vagy alternatívaként System.IO.
előtaggal kell ellátnia ezeket az osztályneveket.
Ezután el kell látnunk eseménykezelőkkel a két gombvezérlő Click
eseményeit, és hozzá kell adjuk a szükséges kódot a <connectionStrings>
szakasz titkosításához és visszafejtéséhez, amely egy gépi szintű kulcsot használ a DPAPI szolgáltatóval. A Tervezőben kattintson duplán az egyes gombokra egy eseménykezelő hozzáadásához Click
a kód mögötti osztályban, majd adja hozzá a következő kódot:
Protected Sub EncryptConnStrings_Click(sender As Object, e As EventArgs) _
Handles EncryptConnStrings.Click
'Get configuration information about Web.config
Dim config As Configuration = _
WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath)
' Let's work with the <connectionStrings> section
Dim connectionStrings As ConfigurationSection = _
config.GetSection("connectionStrings")
If connectionStrings IsNot Nothing Then
' Only encrypt the section if it is not already protected
If Not connectionStrings.SectionInformation.IsProtected Then
' Encrypt the <connectionStrings> section using the
' DataProtectionConfigurationProvider provider
connectionStrings.SectionInformation.ProtectSection( _
"DataProtectionConfigurationProvider")
config.Save()
' Refresh the Web.config display
DisplayWebConfig()
End If
End If
End Sub
Protected Sub DecryptConnStrings_Click(sender As Object, e As EventArgs) _
Handles DecryptConnStrings.Click
' Get configuration information about Web.config
Dim config As Configuration = _
WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath)
' Let's work with the <connectionStrings> section
Dim connectionStrings As ConfigurationSection = _
config.GetSection("connectionStrings")
If connectionStrings IsNot Nothing Then
' Only decrypt the section if it is protected
If connectionStrings.SectionInformation.IsProtected Then
' Decrypt the <connectionStrings> section
connectionStrings.SectionInformation.UnprotectSection()
config.Save()
' Refresh the Web.config display
DisplayWebConfig()
End If
End If
End Sub
A két eseménykezelőben használt kód majdnem azonos. Mindkettő az aktuális alkalmazás Web.config
fájljával kapcsolatos információk beolvasásával kezdődik az WebConfigurationManager
osztálymetódusánOpenWebConfiguration
keresztül. Ez a metódus a megadott virtuális elérési út webes konfigurációs fájlját adja vissza. Ezután a Web.config
fájl s <connectionStrings>
szakasza az Configuration
s osztályGetSection(sectionName)
metóduson keresztül érhető el, amely egy objektumot ConfigurationSection
ad vissza.
Az ConfigurationSection
objektum tartalmaz egy tulajdonságotSectionInformation
, amely további információkat és funkciókat biztosít a konfigurációs szakaszról. Ahogy a fenti kód is mutatja, megállapíthatjuk, hogy a konfigurációs szakasz titkosítva van-e a SectionInformation
tulajdonság IsProtected
ellenőrzésével. Ezenkívül a szakasz titkosítható vagy visszafejthető az SectionInformation
s ProtectSection(provider)
tulajdonságon és UnprotectSection
metóduson keresztül.
A ProtectSection(provider)
metódus bemenetként fogad el egy sztringet, amely megadja a titkosításkor használni kívánt védett konfigurációs szolgáltató nevét. A Button eseménykezelőjében átadjuk a EncryptConnString
DataProtectionConfigurationProvidert a ProtectSection(provider)
metódusnak, hogy a DPAPI-szolgáltatót használjuk. A UnprotectSection
metódus meghatározhatja a konfigurációs szakasz titkosításához használt szolgáltatót, ezért nincs szükség bemeneti paraméterekre.
A ProtectSection(provider)
vagy a UnprotectSection
metódus meghívása után meg kell hívnia az Configuration
objektum Save
metódusát a módosítások megőrzéséhez. A konfigurációs adatok titkosítása vagy visszafejtése és a módosítások mentése után meghívjuk DisplayWebConfig
, hogy töltse be a frissített Web.config
tartalmat a TextBox vezérlőbe.
Miután megadta a fenti kódot, tesztelje az EncryptingConfigSections.aspx
oldalt egy böngészőben. Először egy olyan oldalnak kell megjelennie, amely felsorolja a Web.config
tartalmát, és a <connectionStrings>
szakaszt egyszerű szövegként jeleníti meg (lásd a 3. ábrát).
3. ábra: Szövegdoboz és két gombos webvezérlők hozzáadása a laphoz (ide kattintva megtekintheti a teljes méretű képet)
Kattintson a Kapcsolati karakterláncok titkosítása gombra. Ha a kérés érvényesítése engedélyezve van, a TextBoxból WebConfigContents
visszaküldött jelölés létrehoz egy HttpRequestValidationException
, amely megjeleníti az üzenetet: potenciálisan veszélyes Request.Form
értéket észlelt az ügyféltől. A 2.0-s ASP.NET alapértelmezés szerint engedélyezett kérésérvényesítés tiltja a kódolatlan HTML-t tartalmazó, szkriptinjektálási támadások megelőzésére szolgáló utólagos visszaállításokat. Ez az ellenőrzés le van tiltva az oldalon vagy az alkalmazás szintjén. A lap kikapcsolásához állítsa be a ValidateRequest
beállítást False
az @Page
irányelvben. Az @Page
irányelv az oldal deklaratív korrektúrája tetején található.
<%@ Page ValidateRequest="False" ... %>
A kérések érvényesítéséről, céljáról, az oldal- és alkalmazásszintű letiltásról, valamint a HTML-kódoló korrektúra használatáról további információt a Kérésérvényesítés – Szkripttámadások megakadályozása című témakörben talál.
A lap kérésérvényesítésének letiltása után próbálkozzon újra a Kapcsolati sztringek titkosítása gombra kattintva. Postbackkor a konfigurációs fájl elérhetővé válik, és annak <connectionStrings>
szakasza A DPAPI szolgáltatóval kerül titkosításra. A Szövegdoboz ekkor frissül az új Web.config
tartalom megjelenítéséhez. Ahogy a 4. ábrán látható, az <connectionStrings>
adatok titkosítva lesznek.
4. ábra: A Kapcsolati sztringek titkosítása gombra kattintva titkosítja a <connectionString>
szakaszt (ide kattintva megtekintheti a teljes méretű képet)
A számítógépen létrehozott titkosított <connectionStrings>
szakasz a következő, bár az <CipherData>
elem bizonyos tartalma el lett távolítva a rövidség kedvéért:
<connectionStrings
configProtectionProvider="DataProtectionConfigurationProvider">
<EncryptedData>
<CipherData>
<CipherValue>==</CipherValue>
</CipherData>
</EncryptedData>
</connectionStrings>
Megjegyzés:
Az <connectionStrings>
elem megadja a titkosításDataProtectionConfigurationProvider
() végrehajtásához használt szolgáltatót. Ezt az információt a UnprotectSection
metódus használja, amikor a Kapcsolati sztringek visszafejtése gomb megnyomása történik.
Ha a kapcsolati sztring információk Web.config
-ból érhetők el—akár az általunk írt kódból, egy SqlDataSource-vezérlőből, vagy a gépelt adatkészleteink TableAdapters-éből automatikusan létrehozott kódból—azokat automatikusan visszafejtésre kerülnek. Röviden, nem kell további kódot vagy logikát hozzáadni a titkosított <connectionString>
szakasz visszafejtéséhez. Ennek bemutatásához látogasson el az egyik korábbi oktatóanyagra, például az Egyszerű megjelenítés oktatóanyagra az Alapszintű jelentéskészítés szakaszból (~/BasicReporting/SimpleDisplay.aspx
). Ahogy az 5. ábrán látható, az oktatóanyag pontosan úgy működik, ahogy azt elvárnánk, ami azt jelzi, hogy a titkosított kapcsolati sztring adatait a ASP.NET oldal automatikusan visszafejti.
5. ábra: Az adatelérési réteg automatikusan visszafejti a kapcsolati sztring adatait (ide kattintva megtekintheti a teljes méretű képet)
Ha vissza szeretné állítani a <connectionStrings>
szakaszt egyszerű szöveges formájára, kattintson a Kapcsolati karakterláncok visszafejtése gombra. A visszaküldés során a kapcsolati sztringeket egyszerű szövegként kell látnia a Web.config
elemben. Ezen a ponton a képernyőnek úgy kell kinéznie, mint a lap első megnyitásakor (lásd a 3. ábrát).
3. lépés: Konfigurációs szakaszok titkosítása aspnet_regiis.exe használatával
A .NET-keretrendszer számos parancssori eszközt tartalmaz a $WINDOWS$\Microsoft.NET\Framework\version\
mappában. Az SQL Cache-függőségek használata oktatóanyagban például a aspnet_regsql.exe
parancssori eszközzel néztem meg az SQL Cache-függőségekhez szükséges infrastruktúra hozzáadását. Egy másik hasznos parancssori eszköz ebben a mappában az ASP.NET IIS regisztrációs eszköz (aspnet_regiis.exe
). Ahogy a neve is mutatja, az ASP.NET IIS regisztrációs eszköz elsősorban egy ASP.NET 2.0-s alkalmazás regisztrálására szolgál a Microsoft professzionális szintű webkiszolgálóján, az IIS-ben. Az IIS-hez kapcsolódó funkciók mellett az ASP.NET IIS-regisztrációs eszköz a megadott konfigurációs szakaszok titkosítására vagy visszafejtésére is használható.Web.config
Az alábbi utasítás a konfigurációs szakasz parancssori eszközzel történő titkosításához használt általános szintaxist aspnet_regiis.exe
mutatja be:
aspnet_regiis.exe -pef section physical_directory -prov provider
szakasz a titkosítandó konfigurációs szakasz (például connectionStrings), a physical_directory a webalkalmazás gyökérkönyvtárának teljes fizikai elérési útja, a szolgáltató pedig a használni kívánt védett konfigurációs szolgáltató neve (például DataProtectionConfigurationProvider). Ha a webalkalmazás regisztrálva van az IIS-ben, a fizikai elérési út helyett a következő szintaxist használhatja:
aspnet_regiis.exe -pe section -app virtual_directory -prov provider
Az alábbi aspnet_regiis.exe
példa egy gépszintű kulccsal titkosítja a <connectionStrings>
szakaszt a DPAPI-szolgáltatóval:
aspnet_regiis.exe -pef
"connectionStrings" "C:\Websites\ASPNET_Data_Tutorial_73_VB"
-prov "DataProtectionConfigurationProvider"
Hasonlóképpen a parancssori aspnet_regiis.exe
eszköz is használható a konfigurációs szakaszok visszafejtéséhez.
-pef
helyett használja a -pdf
kapcsolót (vagy -pe
helyett használja a -pd
kapcsolót). Azt is vegye figyelembe, hogy a visszafejtéshez nincs szükség a szolgáltató nevére.
aspnet_regiis.exe -pdf section physical_directory
-- or --
aspnet_regiis.exe -pd section -app virtual_directory
Megjegyzés:
Mivel a DPAPI-szolgáltatót használjuk, amely a számítógéphez tartozó kulcsokat használja, a aspnet_regiis.exe
-t ugyanazon a gépen kell futtatni, amelyről a weblapok ki vannak szolgálva. Ha például ezt a parancssori programot a helyi fejlesztőgépről futtatja, majd feltölti a titkosított Web.config fájlt az éles kiszolgálóra, az éles kiszolgáló nem tudja visszafejteni a kapcsolati sztring adatait, mivel az a fejlesztői géphez tartozó kulcsokkal lett titkosítva. Az RSA-szolgáltató nem rendelkezik ezzel a korlátozásokkal, mivel az RSA-kulcsokat exportálhatja egy másik gépre.
Az adatbázis-hitelesítési beállítások ismertetése
Mielőtt bármely alkalmazás kiadhat SELECT
, INSERT
vagy UPDATE
DELETE
lekérdezéseket adhat ki egy Microsoft SQL Server-adatbázishoz, az adatbázisnak először azonosítania kell a kérelmezőt. Ezt a folyamatot hitelesítésnek nevezzük, és az SQL Server két hitelesítési módszert biztosít:
-
Windows-hitelesítés – Az alkalmazás futtatásának folyamata az adatbázissal való kommunikációra szolgál. Ha ASP.NET alkalmazást futtat a Visual Studio 2005 ASP.NET Fejlesztői kiszolgálón keresztül, a ASP.NET alkalmazás feltételezi az aktuálisan bejelentkezett felhasználó identitását. A Microsoft Internet Information Serveren (IIS) futó ASP.NET alkalmazások általában
domainName``\MachineName
vagydomainName``\NETWORK SERVICE
identitást feltételeznek, bár ez testre szabható. - SQL-hitelesítés – a rendszer hitelesítő adatokként adja meg a felhasználóazonosítót és a jelszóértékeket a hitelesítéshez. Az SQL-hitelesítéssel a felhasználói azonosítót és a jelszót a kapcsolati sztring tartalmazza.
A Windows-hitelesítés előnyben részesítve az SQL-hitelesítést, mert biztonságosabb. Windows-hitelesítés esetén a kapcsolati sztring nem tartalmaz felhasználónevet és jelszót, és ha a webkiszolgáló és az adatbázis-kiszolgáló két különböző gépen található, a rendszer nem küldi el a hitelesítő adatokat a hálózaton egyszerű szöveges formátumban. Az SQL-hitelesítéssel azonban a hitelesítési adatok közvetlenül be vannak ágyazva a kapcsolati sztringbe, és a webkiszolgálóról egyszerű szövegként továbbítódnak az adatbázis-kiszolgálónak.
Ezek az oktatóanyagok Windows-hitelesítést használtak. A kapcsolati sztring vizsgálatával megállapíthatja, hogy milyen hitelesítési módot használ. Az oktatóanyagokban található kapcsolat karakterlánca a következő volt:
Data Source=.\SQLEXPRESS; AttachDbFilename=|DataDirectory|\NORTHWND.MDF; Integrated Security=True; User Instance=True
Az "Integrated Security=True" és a felhasználónév és jelszó hiánya azt jelzi, hogy a Windows hitelesítés van használatban. Egyes kapcsolati sztringekben a Megbízható kapcsolat=Igen vagy az Integrált biztonság=SSPI kifejezés használatos az Integrált biztonság=Igaz helyett, de mindhárom a Windows-hitelesítés használatát jelzi.
Az alábbi példa egy SQL-hitelesítést használó kapcsolati sztringet mutat be. Jegyezze fel a kapcsolati sztringbe ágyazott hitelesítő adatokat:
Server=serverName; Database=Northwind; uid=userID; pwd=password
Tegyük fel, hogy egy támadó meg tudja tekinteni az alkalmazás fájlját Web.config
. Ha SQL-hitelesítéssel csatlakozik egy interneten keresztül elérhető adatbázishoz, a támadó ezzel a kapcsolati sztringgel csatlakozhat az adatbázishoz az SQL Management Studióban vagy a saját webhelyén található ASP.NET oldalakról. A fenyegetés elhárításához titkosítsa a kapcsolati sztring adatait Web.config
a védett konfigurációs rendszer használatával.
Megjegyzés:
Az SQL Server különböző hitelesítési típusaival kapcsolatos további információkért lásd : Biztonságos ASP.NET-alkalmazások létrehozása: Hitelesítés, Engedélyezés és Biztonságos kommunikáció. A Windows és az SQL-hitelesítési szintaxis közötti különbségeket szemléltető további kapcsolati sztring-példákért tekintse meg ConnectionStrings.com.
Összefoglalás
Alapértelmezés szerint egy ASP.NET-alkalmazásban bővítményt tartalmazó .config
fájlok nem érhetők el böngészőn keresztül. Az ilyen típusú fájlok nem jelennek meg, mert bizalmas információkat tartalmazhatnak, például adatbázis-kapcsolati sztringeket, felhasználóneveket és jelszavakat stb. A .NET 2.0 védett konfigurációs rendszere a megadott konfigurációs szakaszok titkosításának engedélyezésével segít a bizalmas információk további védelmében. Két beépített, védett konfigurációs szolgáltató létezik: az egyik az RSA algoritmust, a másik pedig a Windows Data Protection API-t (DPAPI) használja.
Ebben az oktatóanyagban áttekintettük, hogyan titkosíthatja és fejthet vissza konfigurációs beállításokat a DPAPI-szolgáltatóval. Ez programozott módon is elvégezhető, ahogy a 2. lépésben láttuk, valamint a aspnet_regiis.exe
3. lépésben tárgyalt parancssori eszközzel is. A felhasználói szintű kulcsok használatáról vagy az RSA-szolgáltató helyett való használatáról további információt a További olvasás szakaszban talál.
Boldog programozást!
További olvasás
Az oktatóanyagban tárgyalt témakörökről az alábbi forrásokban talál további információt:
- Biztonságos ASP.NET alkalmazás létrehozása: hitelesítés, engedélyezés és biztonságos kommunikáció
-
Értékek titkosítása
Web.config
a ASP.NET 2.0-ban - Útmutató: Konfigurációs szakaszok titkosítása a ASP.NET 2.0-ban a DPAPI használatával
- Útmutató: Konfigurációs szakaszok titkosítása a ASP.NET 2.0-ban az RSA használatával
- Configuration API a .NET 2.0-ban
- Windows adatvédelem
Tudnivalók a szerzőről
Scott Mitchell, hét ASP/ASP.NET-könyv szerzője és a 4GuysFromRolla.com alapítója, 1998 óta dolgozik a Microsoft webtechnológiáival. Scott független tanácsadóként, edzőként és íróként dolgozik. Legújabb könyve Sams Tanuld meg ASP.NET 2.0 24 óra alatt. Ő itt elérhető mitchell@4GuysFromRolla.com.
Külön köszönet
Ezt az oktatóanyag-sorozatot sok hasznos véleményező áttekintette. Az oktatóanyag vezető véleményezői Teresa Murphy és Randy Schmidt voltak. Szeretné áttekinteni a közelgő MSDN-cikkeimet? Ha igen, írj egy sort a mitchell@4GuysFromRolla.com-ra.