保护连接字符串

保护连接字符串

摘自MSDN

保护对数据源的访问是安全应用程序最重要的目标之一。为了帮助限制对数据源的访问,必须保护连接信息(例如用户标识、密码和数据源名称)的连接信息。以纯文本形式存储用户标识和密码(例如在源代码中)会造成严重的安全问题。即使为外部源提供包含用户标识和密码信息的编译版代码,编译的代码也可能会被反汇编,用户标识和密码可能会被使用 MSIL 反汇编程序 (Ildasm.exe) 工具公开。因此,关键信息(如用户标识和密码)一定不要存在于代码中。

指定 Windows 身份验证(集成安全性)

建议您尽可能使用 Windows 身份验证(也称为集成安全性)。连接字符串中使用的语法依提供程序而异。下表显示 .NET Framework 数据提供程序所使用的语法。

提供程序 语法

SqlClient

复制代码

Integrated Security=true;


SqlClient, OleDb

复制代码

Integrated Security=SSPI;


Odbc

复制代码

Trusted_Connection=yes;


OracleClient

复制代码

Integrated Security=yes;

注意,在对 OleDb 提供程序使用 Integrated Security=true 时会引发异常。

安全注意

如果在连接字符串中将 Persist Security Info 关键字设置为 true 或 yes,将允许在打开连接后,从连接中获得涉及安全性的信息(包括用户标识和密码)。如果在建立连接时必须提供用户标识和密码,最安全的方法是在使用信息打开连接后丢弃这些信息,在 Persist Security Info 设置为 false 或 no 时会发生这种情况。当您向不可信的源提供打开的连接,或将连接信息永久保存到磁盘时,这点尤其重要。如果将 Persist Security Info 保持为 false,可帮助确保不可信的源无法访问连接中涉及安全性的信息,并帮助确保任何涉及安全性的信息都不会随连接字符串信息永久保存到磁盘中。默认情况下,Persist Security Info 设置为 false。

不要使用通用数据链接文件

可以在通用数据链接 (UDL) 文件中提供 OleDbConnection 的连接信息;但是,应避免这样做。UDL 文件未加密,会以明文的形式公开连接字符串信息。因为 UDL 文件对应用程序来说是基于外部文件的资源,所以,无法使用 .NET Framework 保护其安全。

将连接字符串存储在配置文件中

为了避免将连接字符串存储在代码中,可以将代码存储在 ASP.NET 应用程序的 web.config 文件中以及 Windows 应用程序的 app.config 文件中。

连接字符串可以存储在配置文件的 <connectionStrings> 元素中。连接字符串存储为键/值对的形式,可以在运行时使用名称查找存储在 connectionString 属性中的值。以下配置文件示例显示名为 DatabaseConnection 的连接字符串,该连接字符串引用连接到 SQL Server 本地实例的连接字符串。

复制代码

<connectionStrings>
<add name="DatabaseConnection"
connectionString="Persist Security Info=False;Integrated Security=SSPI;database=Northwind;server=(local);"
providerName="System.Data.SqlClient" />
</connectionStrings>

从配置文件中检索连接字符串

System.Configuration 命名空间提供使用配置文件中存储的配置信息的类。ConnectionStringSettings 类具有两个属性,映射到上面所示的 <connectionStrings> 示例部分中显示的名称。

ConnectionString

连接字符串。

Name

<connectionStrings> 部分的连接字符串的名称。

以下示例通过将连接字符串的名称传递给 ConfigurationManager,再由其返回 ConnectionStringSettings 对象,以便从配置文件中检索字符串。ConnectionString 属性用于显示此值。

Visual Basic

复制代码

Option Explicit On
Option Strict On
Imports System.Configuration
Module Module1
Sub Main()
Dim settings As ConnectionStringSettings
settings = _
ConfigurationManager.ConnectionStrings("DatabaseConnection")
If Not settings Is Nothing Then
Console.WriteLine(settings.ConnectionString)
End If
End Sub
End Module

C#

复制代码

using System;
using System.Configuration;
class Program
{
static void Main()
{
ConnectionStringSettings settings;
settings =
ConfigurationManager.ConnectionStrings["DatabaseConnection"];
if (settings != null)
{
Console.WriteLine(settings.ConnectionString);
}
}
}

使用受保护的配置加密连接字符串

“受保护的配置”功能可以用于加密配置文件(例如 ASP.NET 应用程序的 Web.config 文件或 Windows 应用程序的 App.config 文件)中的敏感信息,包括用户名和密码、数据库连接字符串和加密密钥。请参见使用受保护的配置加密配置信息对配置节进行加密和解密演练:使用受保护的配置加密配置信息

通过用户输入构造连接字符串

如果从外部源(例如提供用户标识和密码的用户)获取连接字符串信息,必须验证来自该源的所有输入,确保其格式正确并且不包含影响连接的其他参数。有关详细信息,请参见验证用户输入

使用连接字符串生成器

DbConnectionStringBuilder 类提供用于派生强类型化的连接字符串生成器的基类。这些生成器使您可以通过编程创建语法上正确的连接字符串以及分析和重建现有的连接字符串。可以使用 DbConnectionStringBuilder 类分配任意键/值对,并将生成的连接字符串传递给强类型化的提供程序。以下作为 .NET Framework 的一部分提供的数据提供程序提供从 DbConnectionStringBuilder 继承的强类型化的类:

请参见

任务

如何:确保使用数据源控件时连接字符串的安全

概念

使用连接字符串
加密和数据访问
Securing the User's Password

其他资源

保证 ADO.NET 应用程序的安全
使用受保护的配置加密配置信息

时间: 2024-09-24 21:35:17

保护连接字符串的相关文章

ASP.NET 2.0数据教程之七十三:保护连接字符串及其它设置信息

返回"ASP.NET 2.0数据教程目录" 导言: ASP.NET应用程序的设置信息通常都存储在一个名为Web.config 的XML文件里.在教程的前面部分我们已经好几次修改过Web.config文件了.比如 在第一章,我们创建名为Northwind的数据集时,数据库连接字符串信息自动的添 加到Web.config文件的<connectionStrings>节点.再后来,在第3章里,我 们手动更新了Web.config文件,添加了一个<pages>元素,对所有

在ASP.NET 2.0中操作数据之七十一:保护连接字符串及其它设置信息_自学过程

导言: ASP.NET应用程序的设置信息通常都存储在一个名为Web.config的XML文件里.在教程的前面部分我们已经好几次修改过Web.config文件了.比如在第一章,我们创建名为Northwind的数据集时,数据库连接字符串信息自动的添加到Web.config文件的<connectionStrings>节点.再后来,在第3章里,我们手动更新了Web.config文件,添加了一个<pages>元素,对所有的ASP.NET页面运用DataWebControls主题. 由于Web

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

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

如何用c# 连接字符串数据库服务器端口

正常的数据库连接字符串配置,这是在MSSQL服务器端口是1433(默认)的情况下. <add key="Article" value="server=.;uid=Admin;pwd=admin;database=db;"></add> 但是有时候,为了数据库服务器安全,这个端口会被改成其它的,这时再连接数据库可能报出以下错误: 在建立与服务器的连接时出错.在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允

连接数据库常用的连接字符串

连接数据库|字符串 access连接字符串:<%dim conndim connstrdb="data/data.mdb" '数据库文件位置on error resume nextconnstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(db)set conn=server.createobject("ADODB.CONNECTION")if e

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

加密|解密|数据|数据库|数据库连接|字符串 数据库连接字符串的处理应该是一个项目里最基础的东东了.(除非你的项目不涉及到数据库.) 千万不要小看他,处理不好也时会给你带来不少的麻烦的. 连接字符串的内容在这里就不讨论了,这里主要说一下他的存放位置和读取方法. 我们要达到的目的:无论连接字符串如何变化,都不需要修改项目! 1.把连接字符串写在程序里面. 一般的初级教程里会告诉你这么写 VB.net Dim cn As New SqlClient.SqlConnection("user id=sa

怎样从ASP.NET 2.0中读取连接字符串的设置

asp.net|字符串 在ASP.NET 2.0中,使用了一种在运行时解析为连接字符串值的新的声明性表达式语法,按名称引用数据库连接字符串.连接字符串本身存储在 Web.config 文件中的 <connectionStrings> 配置节下面,以便易于在单个位置为应用程序中的所有页进行维护. 范例程序代码如下: <?xml version="1.0"?><configuration><connectionStrings><add

c#,oracle的连接字符串,sys用户的解决办法。

oracle|解决|字符串 System.Data.OracleClientOracleConnection.ConnectionString 属性下表为 ConnectionString 内的值列出了有效的名称. 名称 默认值 说明 数据源或服务器   要连接的oracle实例的名称或网络地址 集成安全性 'false' 该连接是否为安全的连接. 可识别的值为 true(极力建议使用).false.yes 和 no. 密码   Oracle 帐户的登录密码(建议不要使用.为了保持较高的安全级别

“无法指出的错误”——连接字符串的一种原因

错误|字符串 在较旧版本的odbc驱动程序下,使用第(1)种连接字符串,没有出现该错误.升级odbc驱动程序后(升级了sql server 7.0的sp2),出现"无法指出的错误"(第一次访问不出错,刷新后出错),错误位置指向connection.open connstr一行,将连接字符串改为第(2)种,也就是把它的所有参数全部写出来,错误消失. (1) connstr="DBQ="+server.mappath("usecar.mdb")+&q