日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
SQLServer數(shù)據(jù)庫(kù)對(duì)連接字符串的安全性處理

本文我們主要介紹了關(guān)于SQL Server數(shù)據(jù)庫(kù)連接字符串的定義以及它的安全性問(wèn)題的一些知識(shí),接下來(lái)就讓我們一起來(lái)了解一下這一過(guò)程吧。

一、數(shù)據(jù)庫(kù)安全性

1)盡量使用Windows身份驗(yàn)證而不是SQL Server 驗(yàn)證。

安全容易管理:使用Windows身份驗(yàn)證:連接時(shí)需要寫(xiě)一個(gè)Windows集成的安全性,連接時(shí)使用的是本機(jī)正在使用的用戶(hù),或者是IIS正在連接到SQL Server的用戶(hù)。使用集成的用戶(hù)連接到SQL Server。在Web應(yīng)用程序,我們需要了解是哪個(gè)用戶(hù)連接到了SQL Server,默認(rèn)下,放在IIS的虛擬目錄應(yīng)用程序,用集成的身份驗(yàn)證訪問(wèn)SQL Server,會(huì)通過(guò)IIS里的aspnet虛擬用戶(hù)訪問(wèn)后臺(tái)的SQL數(shù)據(jù)庫(kù)。就需要指定它的權(quán)限來(lái)訪問(wèn)數(shù)據(jù)庫(kù)。 如果通過(guò)希望客戶(hù)端,集成Windows身份驗(yàn)證,需要在IIS里面對(duì)這個(gè)用戶(hù)指定權(quán)限。Asp.net仍然后使用aspnet用戶(hù),需要通過(guò)web.config模擬結(jié)點(diǎn)來(lái)配置,就可以將IE傳過(guò)來(lái)的用戶(hù)傳到后臺(tái),但是注意連接過(guò)多的話,因?yàn)槊總€(gè)人連接集成不一樣,不會(huì)使用連接池。

使用SQL Server 驗(yàn)證:連接到后臺(tái)的SQL Server要知道哪個(gè)用戶(hù),連接時(shí)需要輸入用戶(hù)名和密碼。

不需要在連接字符串中設(shè)置用戶(hù)名和密碼:在登錄時(shí)輸入用戶(hù)名和密碼,更加安全,由Windows控制。用戶(hù)名和密碼放在本機(jī)的數(shù)據(jù)庫(kù)里面,放在與環(huán)境里面。

可以通過(guò)密碼策略保證安全:比如:在域環(huán)境里面,指定密碼策略,保證密碼的復(fù)雜度,密碼不重復(fù)。

密碼不會(huì)通過(guò)明文在網(wǎng)絡(luò)中傳遞,集成Windows 身份驗(yàn)證:

 
 
 
  1. SqlClient : Integrated Security = true   or  Integrated Security = SSPI 
  2.  
  3. OleDb   :Integrated Security = true 
  4.  
  5. Odbc    :Trusted_Connection = yes ;  
  6.  
  7. OracleClient :Integrated Security = true 

二、定義連接字符串

1)Persist Security Info的默認(rèn)設(shè)置為 false。

2)如果將其設(shè)置為T(mén)RUE 或FALSE,則允許再打開(kāi)連接后通過(guò)獲取安全敏感信息(包括用戶(hù)ID和密碼)確保的連接之后不會(huì)返回到應(yīng)用程序。

3)保持將Persist Security Info顯示的設(shè)置為false ,以確保不受信任的來(lái)源不能訪問(wèn)連接字符串。

DEMO1: 修改Persist Security Info

 
 
 
  1. using System;  
  2.  
  3. using System.Data.SqlClient;  
  4.  
  5. namespace 修改Persist_Security_Info  
  6.  
  7. {  
  8.  
  9. class Program  
  10.  
  11. {  
  12.  
  13. static void Main(string[] args)  
  14.  
  15. {   
  16.  
  17. //persist Security Info = false 
  18.  
  19. SqlConnection conn2 = new SqlConnection("server=.;database=Test;uid =sa;pwd=sa; Persist Security Info = false");     
  20.  
  21. conn2.Open();  
  22.  
  23. if (!string.IsNullOrEmpty(conn2.ConnectionString))  
  24.  
  25. {  
  26.  
  27. Console.WriteLine(conn2.ConnectionString);  
  28.  
  29. }  
  30.  
  31. conn2.Close();  
  32.  
  33. //persist Security Info = true 
  34.  
  35. SqlConnection conn1 = new SqlConnection("server=.;database=Test;uid=sa;pwd=sa;Persist Security Info = true;");  
  36.  
  37. conn1.Open();  
  38.  
  39. if (!string.IsNullOrEmpty(conn1.ConnectionString))  
  40.  
  41. {  
  42.  
  43. Console.WriteLine(conn1.ConnectionString);  
  44.  
  45. }  
  46.  
  47. conn1.Close();  
  48.  
  49. }  
  50.  
  51. }  
  52.  

三、連接字符串的注入式攻擊 

有些連接是通過(guò)SQL Server身份驗(yàn)證連接的,比如:企業(yè)里面的Windows應(yīng)用程序,輸入用戶(hù)名密碼就是登錄(SQL Server的用戶(hù)名和密碼),權(quán)限(能看哪些數(shù)據(jù),不能看哪些數(shù)據(jù))是通過(guò)SQL Server來(lái)控制的。

1)類(lèi)似于SQl 注入式攻擊。

2)在連接字符串中通過(guò)封號(hào)來(lái)加入其他的參數(shù)。

3)例如: str = constr ="server= .; database=Test;uid =sa ;pwd="+password ;輸入的是: password= "sa; Pooling = true ;Min Pool Size = 999999 ; Max Pool Szzie = 999999;"

解決方法——>使用連接字符串生成器

1)ADO.NET2.0 為不同數(shù)據(jù)庫(kù)提供程序引入了新的連接字符串生成器

2)從DbConnectionStringBuilder繼承:

提供程序

ConnectionStringBuilder類(lèi)

System.Data.SqlClient

SqlConnectionStringBuilder

System.Data.OleDb

OleDbConnectionStringBuilder

System.Data.Odbc

OdbcConnectionStringBuilder

System.Data.OracleClient

OracleConnectionStringBuilder

便于不同數(shù)據(jù)庫(kù)提供程序連接字符串的編寫(xiě)。

可以避免連接字符串注入式攻擊(還可以用 '.' 運(yùn)算符賦值)

DEMO2:連接字符串生成器。

 
 
 
  1. private void button1_Click(object sender, EventArgs e)  
  2.  
  3. {  
  4.  
  5. SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();  
  6.  
  7. builder.DataSource = txtServer.Text.Trim();  
  8.  
  9. builder.InitialCatalog = txtDb.Text.Trim();  
  10.  
  11. builder.UserID = txtDb.Text.Trim();  
  12.  
  13. builder.Password = txtPwd.Text.Trim();  
  14.  
  15. this.txtConStr.Text = builder.ConnectionString;   
  16.  

四、存儲(chǔ)連接字符串

將整個(gè)連接字符串存儲(chǔ),不希望被查看連接字符串。

方法一:放在一個(gè)不知道的地方

方法二:加密

連接字符串存儲(chǔ)在:

1)配置文件(不隱蔽)。

2)COM+Catalog。

3)Windows注冊(cè)表里面。

4)自定義文件結(jié)構(gòu)。

DEOM3:在配置文件中存儲(chǔ)連接字符串。

Load事件:

 
 
 
  1. private void Form1_Load(object sender, EventArgs e)  
  2.  
  3. {  
  4.  
  5. //連接字符串直接保存在 App.config里面  
  6.  
  7. ConnectionStringSettings settings =  ConfigurationManager.ConnectionStrings["strCon"];  
  8.  
  9. this.textBox1.Text = settings.ConnectionString;  
  10.  
  11. //連接通過(guò)configSource保存在 connectionString.config  
  12.  
  13. this.txtCon.Text = ConfigurationManager.AppSettings["conn"].ToString();  
  14.  
  15. }  
  16.  
  17. App.config:  
  18.  
  19.  
  20.  
  21.  
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35. connectionString.config:  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  

五、加密連接字符串

.NET當(dāng)中的加密算法:

1)對(duì)稱(chēng)算法(3DES)  :保存密鑰。

2)非對(duì)稱(chēng)算法(RSA) :通過(guò)公鑰(保存在XML里面)控制加密解密。

3)數(shù)據(jù)保護(hù)(DPAPI)   :不是加密算法,而是使用DPAPI(一個(gè)WindowsAPI,數(shù)據(jù)保護(hù)的API,使用Windows本機(jī)用戶(hù)的安全性)。

六、受保護(hù)的配置

1)使用受保護(hù)配置對(duì)連接字符串值進(jìn)行加密的配置文件不以明文形式顯示連接字符串, 而是以加密形式存儲(chǔ)它們。

2)在對(duì)頁(yè)進(jìn)行請(qǐng)求時(shí)在對(duì)頁(yè)進(jìn)行請(qǐng)求時(shí),.NET Framework 對(duì)連接字符串信息進(jìn)行解密,并使其可供應(yīng)用程序使用。

創(chuàng)建配置

1)ASP.NET IIS 注冊(cè)工具(Aspnet_regiis.exe)

–  對(duì)Web.config文件(其他的文件也是一樣的)的節(jié)進(jìn)行加密和解密、創(chuàng)建或刪除密鑰容器、導(dǎo)出和導(dǎo)入密鑰容器信息以及管理對(duì)密鑰容器的訪問(wèn)。

2)System.Configuratiion 命名空間中的受保護(hù)配置命名空間中的類(lèi)。

– DPAPIProtectedConfigurationProvider。使用Windows 數(shù)據(jù)保護(hù)API (DPAPI) 對(duì)數(shù)據(jù)進(jìn)行加密和解密。

– RsaProtectedConfigurationProvider 。使用RSA 加密算法對(duì)數(shù)據(jù)進(jìn)行加密和解密。

關(guān)于SQL Server數(shù)據(jù)庫(kù)連接字符串的安全性問(wèn)題就介紹到這里了,希望本次的介紹能夠?qū)δ兴鶐椭?/p>
本文名稱(chēng):SQLServer數(shù)據(jù)庫(kù)對(duì)連接字符串的安全性處理
文章起源:http://www.5511xx.com/article/cocgeeg.html