分享
 
 
 

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

王朝other·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

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

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

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

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

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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有