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文件就行了。

  • 相关阅读:
    性能测试篇 :Jmeter HTTP代理服务器录制压力脚本
    使用JMeter录制手机App脚本
    WEB接口测试之Jmeter接口测试自动化 (二)(数据分离)
    【Python】Python读取文件报错:UnicodeDecodeError: 'gbk' codec can't decode byte 0x99 in position 20: illegal multibyte sequence
    【Python】学习笔记九:面向对象拓展
    【Python】学习笔记七:函数
    【Python】学习笔记五:缩进与选择
    【Python】学习笔记三:序列
    【Python】学习笔记二:基本数据类型
    【Python】学习笔记一:Hello world
  • 原文地址:https://www.cnblogs.com/tranw/p/6957879.html
Copyright © 2011-2022 走看看