zoukankan      html  css  js  c++  java
  • 数据库连接字符串的处理方法!加密解密连接字符串。

     

    数据库连接字符串的处理方法!加密解密连接字符串。

    标签: 数据库加密解密dllvb.netstring
     分类:

    数据库连接字符串的处理应该是一个项目里最基础的东东了。(除非你的项目不涉及到数据库。)

    千万不要小看他,处理不好也时会给你带来不少的麻烦的。

    连接字符串的内容在这里就不讨论了,这里主要说一下他的存放位置和读取方法。

    我们要达到的目的:无论连接字符串如何变化,都不需要修改项目!

    1.把连接字符串写在程序里面。

    一般的初级教程里会告诉你这么写

    VB.NET

    Dim cn As New SqlClient.SqlConnection("user id=sa;password=sa;server=.;initial catalog=数据库名称")

    C#

    SqlClient.SqlConnection cn = new  SqlClient.SqlConnection("user id=sa;password=sa;server=.;initial catalog=数据库名称")

    这么写当然是没有错误,但是当你写了n个页面后,有一半的页面有这样的代码,这时候如果需要改变连接字符串(比如换用户名和密码)的话,那可就有得你改的了。想当初我就犯过这样的错误,555555

    2.放在web.config里面

    这是比较流行的方法了。修改web.config文件,加入以下代码

    <APPSETTINGS>
    <ADD value="user id=sa;password=sa;server=.;initial catalog=数据库名称" key="connString" />
    </APPSETTINGS>

    然后在需要的地方调用就可以了。

    VB.Net

    Dim cnString As String = System.Configuration.ConfigurationSettings.AppSettings.Item("connString")

    C#

    string cnString = System.Configuration.ConfigurationSettings.AppSettings["connString"]

    这样呢就不怕连接字符串再发生变化了。如果有变化的话,修改web.config就行了。

    缺点就是web.congfig 是文本形式的,虽然不能下载,但还是缺乏安全感。

    3.放在注册表里面

     事先把连接字符串放在注册表里面,用的时候到注册表里面取值。

    优点:安全性高。要想看到注册表里的信息不是很容易的事情吧。

    缺点:读取注册表需要一定的权限,但是一般的空间是不会开放这个权限的,因为开放了就意味着可以操作注册表,这对服务器就太不安全了。

    4.放在DLL文件里面

    写一个单独的类,再写一个函数,调用这个函数返回连接字符串。然后把它编译成DLL文件备用

    using System;
    namespace JYK
    {
        /// <summary>
        /// 取得连接字符串。
        /// </summary>
        public class Connection
        {
            public static string ConnectionString()
            {
                return "user id=sa;password=sa;server=.;initial catalog=数据库名称";
            }
        }
    }

    直接打开 DLL文件 看到的是乱码,要比写在web.config有安全感。当然了通过反编译软件还是可以看到里面的代码。

    还有就是修改起来不太方便,需要重新编译一下这个类。

    5.综合

    以上个四种方法各有优越缺点,用哪一个都不是最好的,另外还有一个问题没有提及 —— 加密连接字符串。

    那么在一个项目里,怎么做才是最好的方法呢? —— 分层。

    项目 <——类(DLL文件) <——存放连接字符串的位置

    A.对于项目来说呢只需要知道:当我要用连接字符串的时候我到DLL里面(调用函数)读取就行了,至于连接字符串具体的存放位置、是否加密等都不必关心。

    B.类(DLL文件),这个就很重要和灵活了。对于一般的项目可以这么写

    using System;
    namespace JYK
    {
        /// <summary>
        /// 取得连接字符串。
        /// </summary>
        public  class Connection
        {
            public static string ConnectionString()
            {
                return System.Configuration.ConfigurationSettings.AppSettings["ConnString"];
            }
        }
    }

    注意:上一个DLL是把连接字符串直接写在了类里面,而这回是到web.config里面读取。

    也许你会问:既然是到web.config里面读取连接字符串,那为什么还要加上一个DLL呢,是不是多此一举呀?

    这么做是为了达到这个目的:无论连接字符串如何变化,都不需要修改项目!

    如果是直接读取web.config,那么如果web.config里面放的是加密的连接字符串,那怎么处理?是不是要修改项目,或者是数据层。不要认为修改数据层就不是修改项目了

    如果加上了一个DLL的话,那么只需要重新编译一下这个DLL就行了。项目可以保持不变。

    C.连接字符串的存放位置

    这个可以根据项目的要求来做,放在哪里都可以,只需要修改一下DLL文件就行了。

  • 相关阅读:
    Add Two Numbers
    Reverse Linked List II
    Reverse Linked List
    Remove Duplicates from Sorted List
    Remove Duplicates from Sorted List II
    Partition List
    Intersection of Two Linked Lists
    4Sum
    3Sum
    2Sum
  • 原文地址:https://www.cnblogs.com/tranw/p/6957879.html
Copyright © 2011-2022 走看看