web-gelistirme-sc.com

App.config dosyasındaki bağlantı dizesini şifrele

Bir bağlantı dizesini app.config dosyasında şifrelemede sorun yaşıyorum. App.config'in connectionStrings bölümünü koruyacak kodum var, ancak parola hala düz metin olarak görüntüleniyor.

Bağlantı dizesini, konuşlandırıldığında düz metin biçiminde olmamasını sağlayacak şekilde şifrelemem gerekiyor. Web.config için SO 'da benzer soruları görüyorum, ancak app.config'i göremiyorum.

38
Blade3

Bu Makale 'e bir göz atın, bazı çok yararlı örnekleri var. Temelde size yardımcı olmak için System.Configuration.SectionInformation.ProtectSection 'u arıyorsunuz. 

Ayrıca, Korunan Yapılandırmanın Uygulanması bölümüne bir göz atın.

22
John Mitchell

Sadece app.config'inizi web.config olarak yeniden adlandırmanız, aspnet_regiis aracıyla şifrelemeniz ve ardından tekrar app.config olarak yeniden adlandırmanız gereken web.config ile aynı çözümü kolayca uygulayabilirsiniz.

  1. App.config dosyasını web.config olarak yeniden adlandırın
  2. Komut İstemini aç ve şunu yazın:
    %windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis -pef "connectionStrings" c:\<folder containing your web.config> (klasör seviyesinde durun ve "\" izini sürmeyin)
  3. web.config dosyasını app.config olarak yeniden adlandırın 

Şifrelenmiş dosyayı görmek için not defterinde açabilirsiniz. Görsel stüdyoda şifresinin çözüldüğünü göreceksiniz. Bağlantı dizginizi şifrelenmemiş gibi kullanabilirsiniz.

48
benoit

config Dosyasının konumunu tanımla

Configuration config  = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

connectionStrings şifrelemek istiyorsanız

config.ConnectionStrings.SectionInformation.ProtectSection(Nothing);

uygulama yapılandırma bölümlerinden haberdar olmalısınız 

öyleyse AppSettings şifrelemek istiyorsanız

config.AppSettings.SectionInformation.ProtectSection(Nothing);

 enter image description here

3
Salem Ahmed

• App.config dosyasını web.config olarak yeniden adlandırın
• Komut İstemi'ni yönetici olarak çalıştırın:

Şifrelemek için:

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -pef "bağlantı" proje konumunuzu tırnak içinde ve -prov "DataProtectionConfigurationProvider" .__ içinde konumlandırır. " v2.0.50727\aspnet_regiis.exe -pef "connectionStrings" "D:\location\location1\location" -prov "DataProtectionConfigurationProvider" 

Şifre Çözme İçin:
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -pdf "connectionStatik teklifler içindeki proje konumunuzu denetler". Ör. C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -pdf "connectionStrings" "D:\location1\location" 

Hata için: bunu Configuration xmlns="http://schemas.Microsoft.com/.NetConfiguration/v2.0" içine ekleyin 

Bunun gibi:

 enter image description here

• Son olarak, web.config öğesini App.Config olarak yeniden adlandırın

1
anantha Krishnan

Bunu otomatikleştirmenin bir yolu:

ProjectSettings> Derle> BuildEvents> Yapı Oluşturmayı Düzenle

Aşağıdaki kodu yapıştırın:

SET ApplicationName=YourAppWithoutExtention
echo.
echo POST BUILD ACTIONS
echo ====================

if EXIST web.config (
    echo Deleting web.config
    DEL web.config
)

echo Renaming %ApplicationName%.exe.config to web.config
REN %ApplicationName%.exe.config web.config

echo Running aspnet_regis against webconfig
SET rpath=%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis -pef "connectionStrings" "$(TargetDir)
SET rpath=%rpath:~0,-1%"
echo Path: %rpath%
%rpath%

echo Renaming web.config to %ApplicationName%.exe.config 
REN web.config %ApplicationName%.exe.config

echo Done.

"YourAppWithoutExtention" ifadesini uygulama adınızla değiştirme. 

Sonra her kurulduğunda, app.config'inizi otomatik olarak şifreler.

0
stigzler

Ek olarak, web gruplarındaki bağlantı dizelerini şifrelemek ve şifresini çözmek isteyen biri varsa buradaki adımlar şunlardır:

  1. Bir RSA anahtarı oluşturun: aspnet_regiis -pc "MyKeys" -exp

  2. Bu havuza uygulama havuzu kimliği için erişim izni ver: aspnet_regiis -pa "MyKeys" "IIS AppPool\ApplicationPoolName" -full

  3. RSA sağlayıcıyı web.config'e ekleyin: <configuration> <configProtectedData> <providers> <add name="MyProvider" type="System.Configuration.RsaProtectedConfigurationProvider, System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" keyContainerName="MyKeys" useMachineContainer="true" /> </providers> </configProtectedData> </configuration>

  4. RSA sağlayıcısını kullanarak web.config komutunu şifreleyin: aspnet_regiis -pe "connectionStrings" -app "/MyApplication" -prov "MyProvider" Not: Tek bir sunucu senaryosu için yaptığımız gibi alternatif sözdizimini kullanabilirsiniz. Örnek: ASPNET_REGIIS -pef "connectionStrings" "D:\inetpub\wwwroot\applicationFolder" -prov "MyProvider"

  5. Web.config dosyasını açın ve bağlantı dizesinin şifreli olduğunu onaylayın.
  6. Siteyi test edin ve çalıştığını doğrulayın
  7. Web.config dosyasının şifresini çözmeyi deneyin. Aşağıdaki kod içinde bir test.aspx dosyası oluşturun. Şifresi çözülmüş dosyayı görmek için göz atın
  8. RSA anahtarını C sürücüsüne verin: aspnet_regiis -px "MyKeys" "c:\keys.xml" -pri
  9. Bu dosyayı web grubundaki ikinci sunucuya kopyalayın
  10. Bu sunucuya alın: aspnet_regiis -pi "MyKeys" "c:\keys.xml"
  11. Bu anahtara erişim izni ver (Adım 2 ile aynı)
  12. Uygulamayı ikinci sunucuda test et

Kaynak: Bağlantı dizelerini nasıl şifreleyebilir ve şifresini çözebilirsiniz

0
Ned