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

加密|解密|数据|数据库|数据库连接|字符串

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

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

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

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

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

时间: 2024-12-11 15:16:05

数据库连接字符串的处理方法!加密解密连接字符串的相关文章

json对象转为字符串,当做参数传递时加密解密的实现方法_javascript技巧

[son对象  字符串 互相转行] 比如我有两个变量,我要将a转换成字符串,将b转换成JSON对象: var a={"name":"tom","sex":"男","age":"24"}; var b='{"name":"Mike","sex":"女","age":"29"

如何在注册表中存储加密的连接字符串

加密|注册表|字符串 目标本章的目标是: • 在注册表中存储加密的数据库连接字符串 • 从注册表中读取加密的数据库连接字符串并对其进行解密. 返回页首适用范围本章适用于以下产品和技术: • Microsoft Windows XP 或 Windows 2000 Server (Service Pack 3) 以及更高版本的操作系统 • Microsoft .net Framework 版本 1.0 (Service Pack 2) 以及更高版本 • Microsoft Visual C# .ne

JavaScript字符串对象replace方法实例(用于字符串替换或正则替换)_基础知识

JavaScript replace 方法 replace 方法用于在字符串中用一些字符串替换另一些字符串,或者替换符合正则匹配的字符串,并返回替换后的字符串.其语法如下: 复制代码 代码如下: str_object.replace(reg_exp/str, replacement) 参数说明: 参数 说明 str_object 要操作的字符串(对象) reg_exp/str 必需.要匹配的正则表达式/要替换的字符串 如果 reg_exp 具有全局标志 g,那么 replace() 方法将替换所

php 实现一个字符串加密解密的函数实例代码_php实例

php 实现一个字符串加密解密的函数 函数代码如下: /********************************************************************* 函数名称:encrypt 函数作用:加密解密字符串 使用方法: 加密 :encrypt('str','E','nowamagic'); 解密 :encrypt('被加密过的字符串','D','nowamagic'); 参数说明: $string :需要加密解密的字符串 $operation:判断是加密还

PHP封装的字符串加密解密函数_php技巧

程序中经常使用的PHP加密解密字符串函数 代码如下: /********************************************************************* 函数名称:encrypt 函数作用:加密解密字符串 使用方法: 加密 :encrypt('str','E','nowamagic'); 解密 :encrypt('被加密过的字符串','D','nowamagic'); 参数说明: $string :需要加密解密的字符串 $operation:判断是加密还

PHP加密解密字符串汇总

  PHP加密解密函数分享,一个是Discuz!的authcode加密函数(带详细分解),一个是encrypt()函数.需要使用PHP将特定的信息进行加密,也就是通过加密算法生成一个加密字符串,这个加密后的字符串可以通过解密算法进行解密,便于程序对解密后的信息进行处理. 项目中有时我们需要使用PHP将特定的信息进行加密,也就是通过加密算法生成一个加密字符串,这个加密后的字符串可以通过解密算法进行解密,便于程序对解密后的信息进行处理. 最常见的应用在用户登录以及一些API数据交换的场景. 笔者收录

PHP加密解密字符串汇总_php技巧

项目中有时我们需要使用PHP将特定的信息进行加密,也就是通过加密算法生成一个加密字符串,这个加密后的字符串可以通过解密算法进行解密,便于程序对解密后的信息进行处理. 最常见的应用在用户登录以及一些API数据交换的场景. 笔者收录了一些比较经典的PHP加密解密函数代码,分享给大家.加密解密原理一般都是通过一定的加密解密算法,将密钥加入到算法中,最终得到加密解密结果. 1.非常给力的authcode加密函数,Discuz!经典代码(带详解):  function authcode($string,

PHP字符串加密解密程序例子

最常见的应用在用户登录以及一些API数据交换的场景. 笔者收录了一些比较经典的PHP加密解密函数代码,分享给大家.加密解密原理一般都是通过一定的加密解密算法,将密钥加入到算法中,最终得到加密解密结果. 1.非常给力的authcode加密函数,Discuz!经典代码(带详解):    代码如下 复制代码 function authcode($string, $operation = 'DECODE', $key = '', $expiry = 0) {       // 动态密匙长度,相同的明文会

详解 PHP加密解密字符串函数附源码下载_php实例

项目中有时我们需要使用PHP将特定的信息进行加密,也就是通过加密算法生成一个加密字符串,这个加密后的字符串可以通过解密算法进行解密,便于程序对解密后的信息进行处理. 下面先给大家展示下效果图,感兴趣的朋友继续阅读全文. 效果演示     源码下载 笔者收录了一些比较经典的PHP加密解密函数代码,分享给大家.加密解密原理一般都是通过一定的加密解密算法,将密钥加入到算法中,最终得到加密解密结果. 1.非常给力的authcode加密函数,Discuz!经典代码(带详解): function authc