zoukankan      html  css  js  c++  java
  • 对web.config中的数据库连接字符串进行加密 子曰

        网站部署在客户服务器上,但是网站所用的数据库要连接公司mssql服务器。如果数据库连接字符串明文写在web.config中,将是相当危险的事情。

     

       在命令提示符总进入到 C:\WINDOWS\Microsoft.net\Framework\ v4.0.xxxx,其中xxxx是您的软件版本。路径为web.config所在目录。

     

    加密:

    aspnet_regiis –pef connectionStrings C:\ Sales

    需要注意的是如果连接字符串写在appSettings下需要改成:

    aspnet_regiis –pef appSettings   C:\sales

    一旦执行完了加密过程,就可以打开Web.config文件,但是连接字符串已经被混淆。当ASP.NET需要,连接字符串即可自动解密,或者如果需要进行一些更改,例如修改密码,则可以手动输入以下代码来解密。

    aspnet_regiis –pdf connectionStrings c:\Websites\BegAspNet2Db

    请注意,在默认情况下,加密过程使用了一个基于加密算法执行的机器的键。解密过程(无论手动还是在处理页面过程中)必须发生在与加密相同的机器上。例如,作为XCOPY部署的一部分,移动Web.config至另外一台机器将会导致Web.config无法解密,所以推荐在部署Web站点至最终机器之后,再将连接字符串进行加密。

     

    但是如果用这种方式加密,仅仅能防止普通用户查看密码,因为用aspnet_regiis –pdf同样能轻而易举的解密!

    解决方法是加上一个RSA 密钥容器。

    假設今天我們要加密web.config,並部署到三台機器上,全部操作如下:

    1. 用aspnet_regiis -pc "SharedKeys"–exp建立三台機器共用的RSA金鑰容器(Key Container)
    2. 以aspnet_regiis -px "SharedKeys" keys.xml -pri將RSA金鑰容器匯出成XML檔
    3. 將keys.xml複製到三台機器上
    4. 在三台機器上執行aspnet_regiis -pi "SharedKeys" keys.xml滙入RSA金鑰容器
    5. 在三台機器上執行aspnet_regiis -pa "SharedKeys" "NT AUTHORITY\NETWORK SERVICE"授與ASP.NET程式執行權限 (2010-08-30更新: IIS 7.5預設會使用IIS APPPOOL\YourAppPoolName帳號而非NT AUTHORITY\NETWORK SERVICE,詳情可參見保哥的文章,以下應用到授權的地方均比照,不再重複說明。)
    6. 在web.config中加入
      <configProtectedData>
      <providers>
        <add keyContainerName="SharedKey" useMachineContainer="true"
         name="SharedKey" type="System.Configuration.RsaProtectedConfigurationProvider,System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
      </providers>
      </configProtectedData>
    7. 使用aspnet_regiis -pe "connectionStrings" -app "/WebApplication" -prov "SharedKeys"加密連線字串區
    8. 將加密後的web.config部署到三台機器上
    找来找去还是微软的文档全面:
     
  • 相关阅读:
    AutoCAD 2013 .net插件创建向导现在支持Map 3D,Civil 3D,AutoCAD Architecture 和AutoCAD MEP
    AutoCAD® Civil 3D API需求意愿调查
    Linux 下动态库和静态库的创建和调用
    几个典型的内存拷贝及字符串函数实现
    典型的几个链表操作-逆序和重排
    打印 N*N 螺旋矩阵
    PhoneGap开发初体验:用HTML5技术开发本地应用
    不申请变量和空间反转字符串
    寻找最大公共子字符串
    二维动态数组定义及二维静态数组与**P的区别
  • 原文地址:https://www.cnblogs.com/suixufeng/p/3336097.html
Copyright © 2011-2022 走看看