zoukankan      html  css  js  c++  java
  • 加密在 Web.Config 中存储的数据库连接字串

    原文:Storing and Reading Base64 Encoded Connection String in Web.Config
    作者:Bipin Joshi
    出自:DotNetBips
    选译:Miller (sljzdotcom@gmail.com)

    Introduction:

        许多人使用 Web.Config 来存放数据库连接字串,可是 Web.Config 是一个XML文件,所有信息都是以明文保存的,特别重要的是,任何人都可以很轻易的看到你的数据库的信息,包括用户名和密码。在这篇文章中,你可以看到,如何能够使用 Base64 编码来加密存储在 Web.Config 中的数据,最后,你将可以了解如何能够在你的代码中解密并使用。
       
    请注意:Base64 编码并不是一个安全的算法,但是它能够快速而方便的办法来隐藏连接字串以防止一般用户。

    Storing custom values in web.config

    <appSettings>
       
    <add key="connectionstring" 
       value
    ="data source=.\vsdotnet;initial 
       catalog=Northwind;user id=sa;password=mypassword"
    />

    </appSettings> 

    Encrypting connection string:

        我们使用 System.Convert 类来加密连接字串。你可以使用下面的例子进行转换:

    Public Shared Sub Main(args() As String)
    Dim data() As Byte = System.Text.ASCIIEncoding.ASCII.GetBytes(args(0
    )) 
    Dim str As String =
     Convert.ToBase64String(data) 
    Console.
    WriteLine(str

    End Sub

        这里,我们使用System.Text.ASCIIEncoding.ASCII 类将连接字串转换成数组,这非常重要,一方面ToBase64String()  函数的参数必须是数组格式,同时返回值中将包含Base64编码的版本。

        将上面的代码生成应用程序(比如我生成为Base64Encrypter.exe),然后在Dos窗口下运行(注:原命令不分行,为排版的美观分成两行):

        Base64Encrypter.exe  "data source=.\vsdotnet;initial catalog=Northwind;
                                       user id=sa;password=mypassword"

        这样你可以看到输出:

        ZGF0YSBzb3VyY2U9Llx2c2RvdG5ldDtpbml0aWFsIGNhdGFsb2c9Tm9ydGh3aW5kO3VzZXIgaWQ9c2E7
    cGFzc3dvcmQ9bXlwYXNzd29yZA==

        拷贝这段字符串放到 Web.Config 文件中去,如同这样:

    <appSettings>
    <add key="connectionstring"
    value="ZGF0YSBzb3VyY2U9Llx2c2RvdG5ldDtpbml0aWFsIGNhdGFsb2c9Tm9ydGh3aW5kO3VzZXIgaWQ9c2E7
    cGFzc3dvcmQ9bXlwYXNzd29yZA=="/>
    </appSettings>

    Reading the encrypted connection string back:

        看看代码就明白了:

    Dim data() As Byte = Convert.FromBase64String (, _ ConfigurationSettings.AppSettings("connectionstring"))
    str = System.Text.ASCIIEncoding.ASCII.GetString(data)

  • 相关阅读:
    C#调用C++代码遇到的问题总结
    ASP.NET MVC Controller的激活
    利用fis3自动化处理asp.net项目静态资源时遇到的一个编码问题
    工作中遇到的一个多线程下导致RCW无法释放的问题
    在mongoose中使用$match对id失效的解决方法
    passport源码研究
    android手机旋转屏幕时让GridView的列数与列宽度自适应
    git 版本回退
    梦之解读:如何成为牛人
    DataTable与DTO对象的简易转换类
  • 原文地址:https://www.cnblogs.com/callbin/p/1637706.html
Copyright © 2011-2022 走看看