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

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 数据库连接字符串的处理应该是一个项目里最基础的东东了。(除非你的项目不涉及到数据库。) 千万不要小看他,处理不好也时会给你带来不少的麻烦的。 连接字符串的内容在这里就不讨论了,这里主要说一下他的存放位置和读取方法。

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

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

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

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

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

相关文章
|
17天前
|
存储 Go API
使用GoFrame连接和操作TDengine时序数据库
通过使用GoFrame框架和TDengine Go驱动,我们可以方便地连接和操作TDengine时序数据库。无论是插入、查询还是分析时序数据,都可以通过简单的API调用来实现。GoFrame提供了强大的Web开发功能,结合TDengine的高性能时序数据存储和查询能力,可以构建高效、可扩展的时序数据应用。
|
23天前
|
存储 算法 数据库
使用python hashlib模块给明文字符串加密,以及如何撞库破解密码
`hashlib` 是 Python 中用于实现哈希功能的模块,它可以将任意长度的输入通过哈希算法转换为固定长度的输出,即散列值。该模块主要用于字符串加密,例如将用户名和密码转换为不可逆的散列值存储,从而提高安全性。`hashlib` 提供了多种哈希算法,如 `md5`、`sha1`、`sha256` 等。
35 1
|
15天前
|
NoSQL 关系型数据库 PHP
php连接数据库
要使用PHP连接PolarDB或MongoDB数据库,需先准备连接信息,并编写相应代码。对于PolarDB,需设置主机地址、端口、数据库名及凭据,使用`pg_connect`函数建立连接;而对于MongoDB副本集,需安装MongoDB PHP驱动,通过`MongoDB\Client`连接指定的副本集实例。请确保替换示例代码中的占位符为实际值,并正确配置副本集名称和主机信息。更多详细信息与示例代码,请参考相关链接。
125 72
|
21天前
|
SQL Java 数据库连接
Java开发者必知:JDBC连接数据库的“三大法宝”
Java开发者必知:JDBC连接数据库的“三大法宝”
17 7
|
27天前
|
存储 SQL JSON
【Azure Logic App】微软云逻辑应用连接到数据库,执行存储过程并转换执行结果为JSON数据
【Azure Logic App】微软云逻辑应用连接到数据库,执行存储过程并转换执行结果为JSON数据
【Azure Logic App】微软云逻辑应用连接到数据库,执行存储过程并转换执行结果为JSON数据
|
21天前
|
SQL 数据库 开发者
|
21天前
|
存储 SQL 数据库
自连接:数据库查询中的镜像技术
【8月更文挑战第31天】
9 0
|
28天前
|
开发框架 .NET 关系型数据库
【Azure 应用服务】App Service 通过门户配置数据库连接字符串不生效 
【Azure 应用服务】App Service 通过门户配置数据库连接字符串不生效 
|
1天前
|
SQL 安全 网络安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
【9月更文挑战第19天】在数字化时代,网络安全和信息安全已成为我们生活中不可或缺的一部分。本文将介绍网络安全漏洞、加密技术以及安全意识等方面的知识,帮助读者更好地了解网络安全的重要性,提高自己的网络安全防护能力。
26 13
|
1天前
|
SQL 安全 网络安全
网络安全的守护者:揭秘漏洞、加密与安全意识
【9月更文挑战第19天】在数字化浪潮中,网络安全成为我们不可忽视的盾牌。本文将深入探讨网络安全的三大支柱:漏洞识别、加密技术和安全意识。我们将从黑客利用漏洞的方式出发,揭示如何通过加密技术保护数据,以及培养强大的安全意识来防范潜在威胁。文章旨在为读者提供实用的知识,帮助他们在网络世界中更安全地航行。