Encore un titre racoleur pour vous rappeler qu'il est trés rapide de sécuriser le fichier web.config.
C'est un point crucial pour la sécurité d'une application web.
Voici une lise non exhaustive des points à prend en compte :
- Les connectionStrings doivent être cryptées.
- les sections de configurations contenant des user credentials ou des données sensibles doivent être cryptées.
- L'élément Trace doit être désactivée et customErrors mode doit être à "On".
- Un niveau de confiance (Trust level) doit être est appliqué l’application et ne doit pas autorisé plus de droits que ceux requis.
Cela vous prendra quelques instant à mettre en place.
Pour crypter des sections du fichier web.config, la méthode est simple, il suffit d’utiliser « aspnet_regiis.exe »
Prenons l’exemple de la section « appsettings » suivante, qui contient les informations de connexion à une base de donnée :
<appSettings><add key="DatabaseServer" value="MyDatabaseServer" />
<add key="DatabaseName" value="MyDatabase" />
<add key="DatabasePassword" value="secretPassword" />
<add key="DatabaseLogin" value="loginName" />
</appSettings>
Pour crypter cette section, vous utiliserez l’outil « aspnet_regiis » qui correspond à votre version du framework.Net. Pour .Net 2.0, il se trouve dans le répertoire :
« \Windows\Microsoft.Net\Framework\v2.0.50727 ».
Faites :
aspnet_regiis -pe "appSettings" -app "/YourWebApp"
Cela modifiera le fichier web.config pour obtenir quelque chose comme ça :
<appSettings 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>L9Q9ePobkZR +++ </CipherValue>
</CipherData>
</EncryptedKey>
</KeyInfo>
<CipherData>
<CipherValue>Is42Ajvxkd1Ol1iILS +++ </CipherValue>
</CipherData>
</EncryptedData>
</appSettings>
Vous pourrez continuer a utiliser la classe « ConfigurationSettings » pour lire les valeurs du fichier de config sans changer votre code.
Si vous voulez décrypter le fichier, utilisez la commande suivante :
aspnet_regiis -pd "appSettings" -app "/YourWebApp"
Attention cette méthode de cryptage est propre a la machine. Un fichier web.config crypté de cette manière ne pourra pas être réutilisé sur une autre machine.

Poster un nouveau commentaire