7 Stimmen

Passwortschutz (Verschlüsselung) in der Datei web.config (asp.net)

 <system.net>
  <mailSettings>
   <smtp from="email@domain.com" deliveryMethod="Network">
    <network clientDomain="www.domain.com" host="smtp.live.com" defaultCredentials="false" port="25" userName=" email@domain.com " password="password" enableSsl="true" />
   </smtp>
  </mailSettings>
 </system.net>

Dies ist der Fall, wenn ich eine Verschlüsselung für mein Passwort benötige. Ich habe viel im Internet gesucht und gegoogelt, aber ich kann es nicht mehr verschlüsseln.

Kann mir jemand helfen, dies auf einfache, aber sichere Weise zu tun?

6voto

Philippe Punkte 3817

Darüber habe ich einen Artikel in meinem Blog geschrieben: http://pvlerick.github.io/2009/03/encrypt-appconfig-section-using-powershell-as-a-post-build-event

Meine Idee war, dass das Passwort in der IDE klar sein soll, aber in der web.config/app.config des Ausgabeordners verschlüsselt.

Das Skript lautet

param(
  [String] $appPath = $(throw "Application exe file path is mandatory"),
  [String] $sectionName = $(throw "Configuration section is mandatory"),
  [String] $dataProtectionProvider = "DataProtectionConfigurationProvider"
)

#The System.Configuration assembly must be loaded
$configurationAssembly = "System.Configuration, Version=2.0.0.0, Culture=Neutral, PublicKeyToken=b03f5f7f11d50a3a"
[void] [Reflection.Assembly]::Load($configurationAssembly)

Write-Host "Encrypting configuration section..."

$configuration = [System.Configuration.ConfigurationManager]::OpenExeConfiguration($appPath)
$section = $configuration.GetSection($sectionName)

if (-not $section.SectionInformation.IsProtected)
{
  $section.SectionInformation.ProtectSection($dataProtectionProvider);
  $section.SectionInformation.ForceSave = [System.Boolean]::True;
  $configuration.Save([System.Configuration.ConfigurationSaveMode]::Modified);
}

Write-Host "Succeeded!"

Der Post-Build-Befehl lautet

powershell "& ""C:\Documents and Settings\VlericP\My Documents\WindowsPowerShell\EncryptAppConfigSection.ps1""" '$(TargetPath)' 'connectionStrings'

3voto

lucky One Punkte 159

Dies ist ein weiterer Weg, um zu verschlüsseln und zu entschlüsseln coonection Zeichenfolge überprüfen Sie es, wenn Sie mit vs2010 dann öffnen vs2010 mit als Administrator ausführen sind

string provider = "RSAProtectedConfigurationProvider"; 

string section = "connectionStrings";  

protected void btnEncrypt_Click(object sender, EventArgs e)  

{ 

   Configuration confg = 
   WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath); 

   ConfigurationSection configSect = confg.GetSection(section); 

   if (configSect != null) 

   { 
      configSect.SectionInformation.ProtectSection(provider); 
      confg.Save(); 

   } 

} 
protected void btnDecrypt_Click(object sender, EventArgs e) 
{ 
    Configuration config = 
        WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath); 
    ConfigurationSection configSect = config.GetSection(section); 
    if (configSect.SectionInformation.IsProtected) 
    { 
        configSect.SectionInformation.UnprotectSection(); 
        config.Save(); 
    } 
}

1voto

decyclone Punkte 29526

Hier ist ein Thread auf ASP.NET-Foren, die einige Brainstorming geht auf und bieten ein paar mögliche Lösungen:

So verschlüsseln Sie den SMTP-Knoten in der web.config

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X