处理连接字符串的安全性

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"

转载于:https://www.cnblogs.com/lxh168/p/7455275.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值