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

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

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

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

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

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

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

相关文章
|
11月前
|
SQL Java 关系型数据库
Java连接MySQL数据库环境设置指南
请注意,在实际部署时应该避免将敏感信息(如用户名和密码)硬编码在源码文件里面;应该使用配置文件或者环境变量等更为安全可靠地方式管理这些信息。此外,在处理大量数据时考虑使用PreparedStatement而不是Statement可以提高性能并防止SQL注入攻击;同时也要注意正确处理异常情况,并且确保所有打开过得资源都被正确关闭释放掉以防止内存泄漏等问题发生。
494 13
|
11月前
|
SQL 关系型数据库 MySQL
MySQL数据库连接过多(Too many connections)错误处理策略
综上所述,“Too many connections”错误处理策略涉及从具体参数配置到代码层面再到系统与架构设计全方位考量与改进。每项措施都需根据具体环境进行定制化调整,并且在执行任何变更前建议先行测试评估可能带来影响。
1874 11
|
11月前
|
存储 弹性计算 安全
现有数据库系统中应用加密技术的不同之处
本文介绍了数据库加密技术的种类及其在不同应用场景下的安全防护能力,包括云盘加密、透明数据加密(TDE)和选择列加密。分析了数据库面临的安全威胁,如管理员攻击、网络监听、绕过数据库访问等,并通过能力矩阵对比了各类加密技术的安全防护范围、加密粒度、业务影响及性能损耗。帮助用户根据安全需求、业务改造成本和性能要求,选择合适的加密方案,保障数据存储与传输安全。
|
安全 Java 数据库
Jasypt加密数据库配置信息
本文介绍了使用 Jasypt 对配置文件中的公网数据库认证信息进行加密的方法,以提升系统安全性。主要内容包括:1. 背景介绍;2. 前期准备,如依赖导入及版本选择;3. 生成密钥并实现加解密测试;4. 在配置文件中应用加密后的密码,并通过测试接口验证解密结果。确保密码安全的同时,保障系统的正常运行。
921 3
Jasypt加密数据库配置信息
|
SQL XML Java
配置Spring框架以连接SQL Server数据库
最后,需要集成Spring配置到应用中,这通常在 `main`方法或者Spring Boot的应用配置类中通过加载XML配置或使用注解来实现。
827 0
|
11月前
|
缓存 关系型数据库 BI
使用MYSQL Report分析数据库性能(下)
使用MYSQL Report分析数据库性能
634 158
|
11月前
|
关系型数据库 MySQL 数据库
自建数据库如何迁移至RDS MySQL实例
数据库迁移是一项复杂且耗时的工程,需考虑数据安全、完整性及业务中断影响。使用阿里云数据传输服务DTS,可快速、平滑完成迁移任务,将应用停机时间降至分钟级。您还可通过全量备份自建数据库并恢复至RDS MySQL实例,实现间接迁移上云。
|
11月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS费用价格:MySQL、SQL Server、PostgreSQL和MariaDB引擎收费标准
阿里云RDS数据库支持MySQL、SQL Server、PostgreSQL、MariaDB,多种引擎优惠上线!MySQL倚天版88元/年,SQL Server 2核4G仅299元/年,PostgreSQL 227元/年起。高可用、可弹性伸缩,安全稳定。详情见官网活动页。
1700 152