为了保证程序的可拓展性,安全性以及操作的简易性,必须要把连接数据库的连接字符串放在一个好的地方。
1.21 NET Framework 2.0中引入的保护作为加密存储连接的ASP.NET应用程序中的字符串机制配置。它引进了connectionStrings连接字符串的集合。在以前的版本中,将连接字符串保持到appSettings 节点中。
1.23 几项连接安全的技术如下:
注意一下:(1)尽可能的使用集成连接integrated security whenever possible。
(2)千万不要使用空密码和弱密码。
(3)一定不要用sa或任何关于管理员的帐号如administrative。
(4)尽量加密。
1.2.3.1 Application configuration file
应用程序配置文件是基于XML的文本文件,一个web应用程序可以有多个配置文件的所有名为Web.config的文件。每个配置文件支持配置这它所在目录以及子目录的东西,它可以覆盖和继承其他的配置东西。计算机配置文件的Machine.config在。NET运行时安装的配置位于子目录,包含配置信息适用于计算机。
在ASP.NET中最好放在application configuration file中,既安全又方便。数据库连接字符串通常保存<connectionStrings>节点中
<configuration>
<connectionStrings>
<add key="ConnectionString"
value="Data Source=(local);Initial Catalog=AdventureWorks;
User ID=sa;password=;"
/>
</connectionStrings>
</configuration>
ConnectionStrings 属于System.Configuration 类用来检索 <connectionStrings>里面的数据
1.2.3.2特点:
优点:方便。应用程序配置文件,方便的部署。
缺点:应用程序配置文件本身并不具有安全可靠,因为它们存储在文本文件中明确的信息是通过文件系统访问
----所以要对它进行加密和设置访问权限。
1.2.3.3例子
请确保您的名称为Windows窗体应用程序配置文件为app.config,这是默认值。在生成时。这个文件会自动复制到由Visual Studio启动目录。名为applicationName.exe.config
(1)Create a new C# console application named StoredConnectionStringConfig。
(2)加一个应用配置的模板。
(3) Add a SQL Server connection string within a connectionStrings element in the file App.config
<?xml version="1.0" encoding="utf-8" ?> <configuration> <connectionStrings> <add name="AdventureWorks" providerName="System.Data.SqlClient" connectionString="Data Source=(local); Integrated security=SSPI;Initial Catalog=AdventureWorks;" /> </connectionStrings> </configuration>
(4)添加一个对System.Configuration 程序集的引用。
(5)
Code View:
using System; using System.Data; using System.Data.SqlClient; using System.Configuration; namespace StoreConnectionStringConfig { class Program { static void Main(string[] args) { // Enumerate connection strings Console.WriteLine("---Connection string enumeration---"); foreach (ConnectionStringSettings css in ConfigurationManager.ConnectionStrings) { Console.WriteLine(css.Name); Console.WriteLine(css.ProviderName); Console.WriteLine(css.ConnectionString); } // Retrieve a connection string and open/close it Console.WriteLine("\n---Using a connection string---"); Console.WriteLine("-> Retrieving connection string AdventureWorks"); string sqlConnectString = ConfigurationManager.ConnectionStrings[ "AdventureWorks"].ConnectionString; SqlConnection connection = new SqlConnection(sqlConnectString); Console.WriteLine("-> Opening connection string."); connection.Open( ); Console.WriteLine("Connection string state = {0}", connection.State); connection.Close( ); Console.WriteLine("-> Closing connection string."); Console.WriteLine("Connection string state = {0}", connection.State); Console.WriteLine("\nPress any key to continue."); Console.ReadKey( ); } } } |
一下的了解下:
Hardcode in the application
Universal data link (UDL) file(在SQL Server。NET数据提供程序不支持在其连接字符串UDL文件。 UDL文件未加 密)
Windows registry。把连接数据库的配置文件放到注册表中。如 HKEY_LOCAL_MACHINE\SOFTWARE
结束。