Zabezpieczenie pliku web.config

UPDATED: Zachęcam do przeczytania kolejnej części artykułu: Secure config, czyli zabezpieczenie pliku web.config v2.

Jak wiadomo w pliku tym znajdują się informacje konfiguracyjne sterujące pracą aplikacji, np. definicja połączenia z bazą danych lub konfiguracja zewnętrznych serwerów SMTP. Uzyskanie dostępu do tego pliku przez osobę niepowołaną może mieć drastyczne skutki dla aplikacji. Oczywistym faktem staje się zabezpieczenie tych informacji poprzez zaszyfrowanie ich. Służy do tego narzędzie „aspnet_regiis.exe” uruchamiane z konsoli Visual Studio lub lokalizacji ‘%system%\Microsoft.NET\Framework\v2.0.50727’, która jest zależna od wersji zainstalowanego Frameworka. Oczywiście wszystkie wymagane informacje uzyskamy wpisując w konsoli „aspnet_regiis.exe /?”. Należy również pamiętać, by konsolę uruchomić z prawami administratora. Do szyfrowania potrzebna jest tylko jedna opcja, której składnia przedstawia się następująco:

aspnet_regiis –pef "nazwa_sekcji" "pełna ścieżka do katalogu, w którym znajduje się plik Web.config"

oraz przykładowy connectionString:

        <connectionStrings>
            <add name="bazaConnectionString"
                connectionString="Data Source=.\sqlexpress;Initial Catalog=logindb;Integrated Security=True"
                providerName="System.Data.SqlClient" />
        </connectionStrings>
    

Poniższy rysunek prezentuje szyfrowanie powyższego connectionString’a. Zaraz pod nim znajduje się ten sam connectionString, lecz już po zaszyfrowaniu.

Wynik

Oto rezultaty:

        <connectionStrings configProtectionProvider="RsaProtectedConfigurationProvider">
            <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>LUpzkClWhCgd3uhFVSs8uhWciszUEefhc0hedCpfkvvtc1yU2frcrBdksZHbStRI1sjmMxyBWgJLR6+2KUmjxRCdLXZE4ylYqlcPbxiXzJMuBPTuXggKzQ6ru/I2rbBEtcILRnjxM6NVzSNHxkHPkl+FRSwwlwWEZWmtbg4DrNg=</CipherValue>
                        </CipherData>
                    </EncryptedKey>
                </KeyInfo>
                <CipherData>
                    <CipherValue>0uwRvIZZgCJM32BlcWrv//paUah+tx8VYL2zEljGgDeZgZrZ5gCE6ttCupqQil6UoqvOuozkq+kBLfVCvBYauQ9iRGnbyjOtut7r5PZNCus6ddfoxCGd8W0EwXPNuzad1ooUD1OtbjJM4wkbv3YKI7+GazsFqdm69xHXqN0+7/TDQ8cVXO0LOnYz4byABH4TH6mb7RhY15d2SJSVxyfJ94BV0ijFxF87S+9vapziFCEEGgRhLTbEQLUfnDX5jJJImlD2MWlJml1vuRFRV4c2fFJ9XfZoTG5yFoQtcN5oV2c=</CipherValue>
                </CipherData>
            </EncryptedData>
        </connectionStrings>
    

Po zaszyfrowaniu informacji aplikacja sama automatycznie w locie odszyfruje wymagane informacje. Narzędzie standardowo używa szyfrowania RSA, co daje możliwość wyeksportowania klucza i korzystania z niego na innych komputerach. Możemy również wybrać innego providera szyfrowania przez dodanie parametru „–prov”, np.:

aspnet_regiis.exe –pef "nazwa_sekcji" "ścieżka" –prov DataProtectionConfigurationProvider

Aby odszyfrować informacje należy użyć tego samego narzędzia z parametrem „–pdf” i analogiczną konfiguracją.

Promuj

One thought on “Zabezpieczenie pliku web.config

  1. Pingback: Secure config, czyli zabezpieczenie pliku web.config v2 | Łukasz Kurzyniec

Leave a Reply

Your email address will not be published. Required fields are marked *