Šifrování ConnectionString v ASP.NET
- 23. Září 2009
- Publikováno v ASP.NET . IIS
- Napište komentář
Bezpečnosti ve webových aplikacích není nikdy dost. Pro její posílení je však možné učinit pár kroků. V ASP.NET lze například zašifrovat přihlašovací řetězce k databázi.
Možnosti jsou dvě. První z nich je šifrování programové, pomocí metody ProtectSection. Mně se však více líbí utilita aspnet_regiis.exe. Není třeba psát další kód, její použití je jednoduché a dá se využít v instalačních průvodcích. Jak tedy na to?
Hlavní předpoklad pro úspěšné zašifrování je ten, že projekt běží pod IIS. Při vytváření virtuálního adresáře pro daný projekt jsme vyplnili název aplikace. S tím teď budeme pracovat.
Zmíněná utilita aspnet_regiis.exe se nachází na systémovém disku v adresáři WINDOWS\Microsoft.NET\Framework\, kde dále zvolíme adresář podle verze frameworku. V mém případě je celá cesta C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727. Utilita má množství různých parametrů, ze kterých budeme potřebovat tyto tři:
- pe "sekce" - zašifruje zadanou sekci v konfiguračním souboru
- pd "sekce" - dešifruje zadanou sekci
- app "/nazev" - udává název aplikace v IIS pro kterou se de/šifrování provede
Na ukázku zašifruji connectionString WebSite uložené pod názvem 'sifrovaniConnectionStringu', která má v IIS jako název aplikce uveden 'pokus'.
Před zašifrováním vypadá sekce connectionStrings v souboru web.config takto:
<add name="pokusConnectionString" connectionString="Data Source=VIOLET;Initial Catalog=pokus;User ID=pokusUser;Password=abcd" providerName="System.Data.SqlClient" />
</connectionStrings>
Po provedení příkazu:
vypadá sekce connectionStrings takto:
<EncryptedData Type="http://www.w3.org/2001/04/xmlenc#Element"
xmlns="http://www.w3.org/2001/04/xmlenc#">
<EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc" />
<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
<EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">
<EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5" />
<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
<KeyName>Rsa Key</KeyName>
</KeyInfo>
<CipherData>
<CipherValue>IhM6wvyhcpsvCyPfbUn9nykbYv9Tg5PqZqerH2m6xqP4SEWHDFZRcqi2Go/wLGx/nbIPz2JTgHJGEzoDFT41xxDGtefRQB+6DUuS6P/T1fyuWFWGnu5XpcT5WPMprw/bZJji+9YGsz6l0Uu+6vxafPyJArXM0ngBwiR8SfqU9XU=</CipherValue>
</CipherData>
</EncryptedKey>
</KeyInfo>
<CipherData>
<CipherValue>drd8bAYTji4xOd2BC+pkt4+zMItwUPIsdMwIodtWFd7r8yDpxv7uQoBLwWs3B8KgpUTivPELPLz6hXFcL1C8EgP6j/AiBQSERgvNwOsjb/F9Cl777FsZ9SepHCEH8cnD4IHASL0kwCk09mrfPMYTBnn6djmlZlfs8ogdbD24EtbPlO2M+TK6IeYdTi+s9ZGeMLi8r0p1cFXmTnHPBaEe5Iwgtjg5kS7nNo1mA82PUyeWufFuepzahPmiIGNmkJqrZrKGd8q2GYfyRAv7909QTLIATzyDbpm/bQvde7Rc/2k=</CipherValue>
</CipherData>
</EncryptedData>
</connectionStrings>
Po spuštění příkazu:
je connectionString opět plně čitelný.
Dosud žádný komentář.