保护连接字符串

简介: 保护连接字符串 摘自MSDN保护对数据源的访问是安全应用程序最重要的目标之一。为了帮助限制对数据源的访问,必须保护连接信息(例如用户标识、密码和数据源名称)的连接信息。以纯文本形式存储用户标识和密码(例如在源代码中)会造成严重的安全问题。
保护连接字符串
摘自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 时会引发异常。

Security note安全注意

如果在连接字符串中将 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
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 继承的强类型化的类:

请参见

相关文章
kde
|
13天前
|
JSON Linux 数据格式
Docker镜像加速指南:手把手教你配置国内镜像源
配置国内镜像源可大幅提升 Docker 拉取速度,解决访问 Docker Hub 缓慢问题。本文详解 Linux、Docker Desktop 配置方法,并提供测速对比与常见问题解答,附最新可用镜像源列表,助力高效开发部署。
kde
8877 51
|
10天前
typora免费版,激活方法,Typora使用教程
Typora是一款简洁高效的Markdown编辑器,支持即时渲染。本教程涵盖安装方法、文件操作、视图控制、格式排版、字体样式及Markdown语法,助你快速上手使用Typora进行高效写作。
2346 4
|
3天前
|
云安全 人工智能 安全
|
16天前
|
人工智能 定位技术 API
Dify MCP 保姆级教程来了!
大语言模型,例如 DeepSeek,如果不能联网、不能操作外部工具,只能是聊天机器人。除了聊天没什么可做的。
2199 33
|
11天前
|
人工智能 Java Spring
【保姆级图文详解】大模型、Spring AI编程调用大模型
【保姆级图文详解】大模型、Spring AI编程调用大模型
849 10
【保姆级图文详解】大模型、Spring AI编程调用大模型
|
13天前
|
JavaScript Ubuntu IDE
国内如何安装和使用 Claude Code镜像教程 - Windows 用户篇
国内如何安装和使用 Claude Code镜像教程 - Windows 用户篇
1209 6
|
4天前
|
Ubuntu JavaScript Linux
Windows安装Claude Code
Claude Code 是 Anthropic 推出的代码助手,支持在 Windows 通过 WSL(Windows Subsystem for Linux)运行。本文介绍如何在 Windows 系统中启用 WSL、安装 Ubuntu 子系统、配置 Python 与 Node.js 环境,并最终安装和运行 Claude Code。内容涵盖 WSL 设置、开发工具安装、依赖配置及常见问题解决方法,助你顺利在本地环境中使用 Claude Code 提升编码效率。
558 0
Windows安装Claude Code
|
2天前
|
人工智能 资源调度 算法
从混乱到有序:2025年10+拯救多项目管理的专业工具指南
本文全面解析智能组合管理的技术架构与算法创新,涵盖数据感知、优化计算到决策应用的全链条。介绍动态贝叶斯网络优化框架及多项目协同资源调度模型,并结合工具,展示智能工具在研发与项目管理中的前沿应用,助力组织实现高效协同与持续优化。