数据库连接字符串的处理应该是一个项目里最基础的东东了。(除非你的项目不涉及到数据库。)
千万不要小看他,处理不好也时会给你带来不少的麻烦的。
连接字符串的内容在这里就不讨论了,这里主要说一下他的存放位置和读取方法。
我们要达到的目的:无论连接字符串如何变化,都不需要修改项目!
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文件就行了。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/jyk/archive/2006/03/04/615149.aspx
分享到:
相关推荐
.net下C#数据库连接字符串在配置文件中的加密解密类
`DecryptConnectionString`方法则用于解密已加密的连接字符串。 在实际应用中,我们应该将解密后的连接字符串设置回`ConnectionStrings`部分,以便应用程序能够正确使用。在运行时,可以通过以下方式获取解密后的...
数据库连接字符串加密与解密,实现数据库连接字符串的加密,时网站数据库的安全性进一步增加
数据库链接字符串加密解密工具,很好用哦!
特别是对于数据库连接字符串的处理,不当的管理可能会导致敏感信息泄露,进而造成不可估量的损失。本文旨在介绍如何在ASP.NET 2.0中通过配置节加密功能来提高数据库连接字符串的安全性。 #### 原理简介 ASP.NET ...
为了保护这些敏感信息,我们可以采用加密的方法来处理数据库连接字符串。这样,即使`Web.config`文件被泄露,攻击者也无法直接读取到明文的数据库凭据。本文将探讨一种在.NET环境中对`Web.config`中的数据库连接字符...
- `Form1.cs`:窗体的主代码文件,可能会包含处理连接字符串加密和解密的逻辑。 - `Program.cs`:应用程序的启动点,通常包含`Main`方法。 - `ConnectionStringCreate.csproj`:这是项目的项目文件,包含了项目的...
ADO数据库连接字符串的动态设置及加密解密
加密解密字符串.exe huanyin下载
《ADO数据库连接字符串的动态设置及加密解密》,一篇文章,花2元钱才弄来的……感觉还是挺有用的
以下我们将深入探讨字符串加密解密的原理、常见方法以及如何实现。 1. **加密的基本概念**:加密是一种信息安全技术,通过特定的算法将信息转化为难以理解的形式。加密过程通常包括两个主要步骤:加密(Enciphering...
通过理解字符串处理和加密算法的基础知识,结合VC++和MFC的特性,你可以开发出高效且安全的字符串加密解密功能。在实际应用中,还应考虑性能、安全性以及兼容性等方面的问题,以确保代码的质量和可靠性。
学习了C++中的字符串加密解密后,可以进一步研究其他加密算法,如AES、RSA等,或者了解非对称加密和哈希函数等信息安全相关的概念和技术。此外,也可以尝试将加密解密技术应用到实际项目中,如网络通信的安全传输、...
在IT行业中,字符串加密与解密是信息安全领域的重要组成部分,主要目的是保护数据的隐私和安全性。PowerBuilder(PB)是一种流行的编程环境,尤其在开发数据库应用程序时被广泛使用。在这个背景下,PB字符串加密和...
字符串加密通常应用于API调用、数据库存储以及网络通信中,如HTTPS协议中对HTTP报文的加密。常见的字符串加密算法有对称加密(如AES,DES)和非对称加密(如RSA,ECC)。对称加密速度快,适用于大量数据的加密,但...
ASP.NET Web.config 中数据库连接字符串加密解密 ASP.NET 编程语言中,Web.config 文件是用于存储应用程序配置信息的文件之一。在这个文件中,我们通常会存储数据库连接字符串,但这些字符串中包含敏感信息,如...
本篇将深入探讨字符串加密解密的实现方法,并以实际应用为例进行解析。 1. **字符串加密原理与方法** - **对称加密**:如DES(Data Encryption Standard)、3DES(Triple DES)、AES(Advanced Encryption ...
总之,MFC中的字符串加密和解密涉及到多种技术,包括但不限于对称加密(如AES)、非对称加密(如RSA)、哈希函数等。开发者应根据具体需求选择合适的加密算法,并合理管理密钥,确保数据的安全性。通过熟练掌握这些...
webconfig连接字符串的加密和解密方法,附加可能出现的问题及解决方案