处理连接字符串的安全性

1. 数据库安全性
 1.1.  尽量使用 Windows 身份验证而不是 SQL Server 验证
  – 安全容易管理
  –不需要在连接字符串中设置用户名和密码
  – 可以通过密码策略保证安全
  – 密码不会通过明文在网络中传递

 1.2. 集成 Windows 身份验证
 提供程序          语法
 SqlClient       Integrated Security=true;
           -- or --
           Integrated Security=SSPI;
 OleDb          Integrated Security=SSPI;
 Odbc        Trusted_Connection=yes;
 OracleClient     Integrated Security=yes;

 1.3. SQL Server 身份验证
 ? SQL Server 身份验证
  –强制实施密码策略
  – 强制密码过期
  –用户在下次登录时必须更改密码  

2. 定义连接字符串
 ? Persist Security Info 关键字的默认设置为false。
 ? 如果将其设置为true 或yes,则允许在打开连接后通过连接获取安全敏感信息(包括用户ID 和密码)。
 ? 保持将PersistSecurity Info 设置为false,以确保不受信任的来源不能访问敏感的连接字符串信息。

3. 防止注入式攻击

3.1. 连接字符串注入式攻击
 ? 类似于 SQL 注入式攻击
 ? 在连接字符串中通过分号(;)来加入其它参数
 ? 例如:连接字符串通过下面方式拼接:
  string constr = “server=(local);database=Northwind;
  uid=sa;pwd=“ + password;
  而输入
  password=“password01!;Pooling=true;Min Pool Size=999999;Max Pool Size=999999;”

3.2. 连接字符串生成器
 ? ADO.NET 2.0 为每个 .NET Framework 数据提供程序引入了新的连接字符串生成器
 ? 从DbConnectionStringBuilder 继承
 提供程序           ConnectionStringBuilder 类
 System.Data.SqlClient      SqlConnectionStringBuilder
 System.Data.OleDb     OleDbConnectionStringBuilder
 System.Data.Odbc       OdbcConnectionStringBuilder
 System.Data.OracleClient   OracleConnectionStringBuilder

3.3.  避免连接字符串注入式攻击

System.Data.SqlClient.SqlConnectionStringBuilder builder = new
System.Data.SqlClient.SqlConnectionStringBuilder();
builder["Data Source"] = "(local)";
builder["integrated Security"] = true;
builder["Initial Catalog"] = "AdventureWorks;NewValue=Bad";
Console.WriteLine(builder.ConnectionString);

输出结果:

data source=(local);Integrated Security=True; initial
catalog="AdventureWorks;NewValue=Bad"

4. 存储连接字符串

 ? 连接字符串可以存储在
  –配置文件
  – COM+ Catalog
  – Windows 注册表
  – 自定义文件结构

5. 加密连接字符串

 ? .NET 当中的加密算法
  –对称算法(RSA)
  – 非对称算法(3DES)
  –数据保护(DPAPI)

6. 受保护的配置

 ? 使用受保护配置对连接字符串值进行加密的配置文件不以明文形式显示连接字符串,而是以加密形式存储它们
 ? 在对页进行请求时,.NET Framework 对连接字符串信息进行解密,并使其可供应用程序使用

6.1. 创建配置
 ? ASP.NET IIS 注册工具 (Aspnet_regiis.exe)
  – 对Web.config 文件的节进行加密和解密、创建或删除密钥容器、导出和导入密钥容器信息以及管理对密钥容器的访问
 ? System.Configuration 命名空间中的受保护配置类
  – DPAPIProtectedConfigurationProvider。使用Windows 数据保护API (DPAPI) 对数据进行加密和解密
  – RsaProtectedConfigurationProvider。使用RSA 加密算法对数据进行加密和解密

6.2. 加密与解密 Web 配置节
 ? 加密Web 配置节
  – aspnet_regiis -pe "connectionStrings" -app
  "/SampleApplication" -prov
  "RsaProtectedConfigurationProvider“
 ? 解密Web 配置节
  – aspnet_regiis -pd "connectionStrings" -app
  "/SampleApplication"

时间: 2024-11-08 19:47:45

处理连接字符串的安全性的相关文章

SQL Server 连接字符串和身份验证 学习

SQL Server .NET Data Provider 连接字符串包含一个由一些属性名/值对组成的集合.每一个属性/值对都由分号隔开.          PropertyName1=Value1;PropertyName2=Value2;PropertyName3=Value3;.....同样,连接字符串必须包含SQL Server实例名称:          Data Source=ServerName;          使用本地的SQL Server(localhost),如果想要使用

有关连接字符串的一些细节

关于针对不同的数据库服务器的连接字符串的编写方式,请参考下面的链接 http://connectionstrings.com/default.aspx (这是一个独立的第三方网站,整理了几乎所有的连接字符串) 关于SqlConnection.ConnectionString属性的详细介绍,请参考下面的官方文档 http://msdn.microsoft.com/zh-cn/library/system.data.sqlclient.sqlconnection.connectionstring(V

ADO.NET学习笔记之连接字符串

ADO.NET 2.0学习笔记之连接字符串 刚刚入门不久,想什么学习下dot net平台,就先从数据访问入手吧,从今天开始认真学习ado.net 2.0,为将来发展做好坚实基础. 连接字符串 SQL Client .net数据提供程序在连接到数据库时极其灵活,它提供了多种用以生成连接字符串的方式.可以使用关键字,例如“Data Sourse”.“Initial Catalog”,也可以使用"Server".“Database”等旧术语. 下面是两个例子,用于连接到SqlServer数据

ASP.NET MVC 5 - 创建连接字符串(Connection String)并使用SQL Server LocalDB

原文:ASP.NET MVC 5 - 创建连接字符串(Connection String)并使用SQL Server LocalDB 您创建的MovieDBContext类负责处理连接到数据库,并将Movie对象映射到数据库记录的任务中.你可能会问一个问题,如何指定它将连接到数据库? 实际上,确实没有指定要使用的数据库,Entity Framework将预设值使用的LocalDB. 在本节中,我们将显式地在Web.config文件中,添加应用程序的连接字符串(connection string)

常用的连接字符串(vs中连接sqlserver)方便随时查看

Sql Server身份验证有两种,一种是Windows身份验证,还有一种是Sql Server 身份验证 Windows身份验证连接字符串: string connectionString = "Data Source=localhost;database=数据库名称;Integrated Security=True;User Instance=False;"; Integrated Security 指的是集成安全性,为true,就是使用集成安全,后面User Instance 指

Sql-Server 配置远程连接以及C#连接字符串

SQL Server 2008默认是不允许远程连接的,sa帐户默认禁用的,如果想要在本地用SSMS连接远程服务器上的SQL Server 2008,需要做两个部分的配置: 使用用sa账户登录SQL Server Management Studio(简写SSMS) 如果安装时,不是使用SQL Server身份验证模式的,请使用windows身份连接数据库,登录后,右键选择“属性” “安全性”,选中右侧的“SQL Server 和 Windows 身份验证模式”以启用混合登录模式 选择“连接”,勾选

SqlServer 连接字符串多种配置

1 Application Name(应用程序名称):应用程序的名称.如果没有被指定的话,它的值为.NET SqlClient Data Provider(数据提供程序). 2 AttachDBFilename/extended properties(扩展属性)/Initial File Name(初始文件名):可连接数据库的主要文件的名称,包括完整路径名称.数据库名称必须用关键字数据库指定. 3 Connect Timeout(连接超时)/Connection Timeout(连接超时):一个

ConnectionString连接字符串-密码丢失的解决方法

今天遇到一个问题,EF,asp.net  web端登录成功,退出,再登录就异常了, 登出成功时, EF 中 dbcontext.Database.Connection.ConnectionString=data source=.;initial catalog=ZhpGame;user id=sa;password=456;MultipleActiveResultSets=True;App=EntityFramework 再次登录时,遇到鬼了dbcontext.Database.Connecti

[转]ASP.NET MVC 5 - 创建连接字符串(Connection String)并使用SQL Server LocalDB

您创建的MovieDBContext类负责处理连接到数据库,并将Movie对象映射到数据库记录的任务中.你可能会问一个问题,如何指定它将连接到数据库? 实际上,确实没有指定要使用的数据库,Entity Framework将预设值使用的LocalDB. 在本节中,我们将显式地在Web.config文件中,添加应用程序的连接字符串(connection string). SQL Server Express LocalDB LocalDB的是一个SQL Server Express轻量级版本的数据库