成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

SQL Server數據庫對連接字符串的安全性處理

數據庫 SQL Server
在使用SQL Server數據庫開發應用程序時,我們常常會用到連接字符串。連接字符串的安全性將會直接影響數據庫的安全性。本文我們主要介紹了SQL Server數據庫中連接字符串的安全性方面的知識,希望能夠對您有所幫助。

本文我們主要介紹了關于SQL Server數據庫連接字符串的定義以及它的安全性問題的一些知識,接下來就讓我們一起來了解一下這一過程吧。

一、數據庫安全性

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

安全容易管理:使用Windows身份驗證:連接時需要寫一個Windows集成的安全性,連接時使用的是本機正在使用的用戶,或者是IIS正在連接到SQL Server的用戶。使用集成的用戶連接到SQL Server。在Web應用程序,我們需要了解是哪個用戶連接到了SQL Server,默認下,放在IIS的虛擬目錄應用程序,用集成的身份驗證訪問SQL Server,會通過IIS里的aspnet虛擬用戶訪問后臺的SQL數據庫。就需要指定它的權限來訪問數據庫。 如果通過希望客戶端,集成Windows身份驗證,需要在IIS里面對這個用戶指定權限。Asp.net仍然后使用aspnet用戶,需要通過web.config模擬<identity>結點來配置,就可以將IE傳過來的用戶傳到后臺,但是注意連接過多的話,因為每個人連接集成不一樣,不會使用連接池。

使用SQL Server 驗證:連接到后臺的SQL Server要知道哪個用戶,連接時需要輸入用戶名和密碼。

不需要在連接字符串中設置用戶名和密碼:在登錄時輸入用戶名和密碼,更加安全,由Windows控制。用戶名和密碼放在本機的數據庫里面,放在與環境里面。

可以通過密碼策略保證安全:比如:在域環境里面,指定密碼策略,保證密碼的復雜度,密碼不重復。

密碼不會通過明文在網絡中傳遞,集成Windows 身份驗證:

 

  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的默認設置為 false。

2)如果將其設置為TRUE 或FALSE,則允許再打開連接后通過獲取安全敏感信息(包括用戶ID和密碼)確保的連接之后不會返回到應用程序。

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

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.  

 

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

有些連接是通過SQL Server身份驗證連接的,比如:企業里面的Windows應用程序,輸入用戶名密碼就是登錄(SQL Server的用戶名和密碼),權限(能看哪些數據,不能看哪些數據)是通過SQL Server來控制的。

1)類似于SQl 注入式攻擊。

2)在連接字符串中通過封號來加入其他的參數。

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 為不同數據庫提供程序引入了新的連接字符串生成器

2)從DbConnectionStringBuilder繼承:

提供程序

ConnectionStringBuilder類

System.Data.SqlClient

SqlConnectionStringBuilder

System.Data.OleDb

OleDbConnectionStringBuilder

System.Data.Odbc

OdbcConnectionStringBuilder

System.Data.OracleClient

OracleConnectionStringBuilder

便于不同數據庫提供程序連接字符串的編寫。

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

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.  

 

四、存儲連接字符串

將整個連接字符串存儲,不希望被查看連接字符串。

方法一:放在一個不知道的地方

方法二:加密

連接字符串存儲在:

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

2)COM+Catalog。

3)Windows注冊表里面。

4)自定義文件結構。

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

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. //連接通過configSource保存在 connectionString.config  
  12.  
  13. this.txtCon.Text = ConfigurationManager.AppSettings["conn"].ToString();  
  14.  
  15. }  
  16.  
  17. App.config:  
  18.  
  19. <?xml version="1.0" encoding="utf-8" ?> 
  20.  
  21. <configuration> 
  22.  
  23. <connectionStrings > 
  24.  
  25. <add name="strCon" connectionString="server=.;database=Test;uid=sa;pwd=sa"/> 
  26.  
  27. </connectionStrings> 
  28.  
  29. <!--在connectionString.config文件里面指定 appSettings 節點的配置  
  30.  
  31. 便于單獨對這個節點進行加密 [需要將connectionString.confi復制到輸出目錄下,否則    
  32.  
  33. App.config找不到]--> 
  34.  
  35. <appSettings configSource="connectionString.config"/> 
  36.  
  37. </configuration> 
  38.  
  39. connectionString.config:  
  40.  
  41. <appSettings> 
  42.  
  43. <add key="conn" value="server=.;database=Test;uid=sa;pwd=sa"/> 
  44.  
  45. </appSettings> 

 

五、加密連接字符串

.NET當中的加密算法:

1)對稱算法(3DES)  :保存密鑰。

2)非對稱算法(RSA) :通過公鑰(保存在XML里面)控制加密解密。

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

六、受保護的配置

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

2)在對頁進行請求時在對頁進行請求時,.NET Framework 對連接字符串信息進行解密,并使其可供應用程序使用。

創建配置

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

–  對Web.config文件(其他的文件也是一樣的)的節進行加密和解密、創建或刪除密鑰容器、導出和導入密鑰容器信息以及管理對密鑰容器的訪問。

2)System.Configuratiion 命名空間中的受保護配置命名空間中的類。

– DPAPIProtectedConfigurationProvider。使用Windows 數據保護API (DPAPI) 對數據進行加密和解密。

– RsaProtectedConfigurationProvider 。使用RSA 加密算法對數據進行加密和解密。

關于SQL Server數據庫連接字符串的安全性問題就介紹到這里了,希望本次的介紹能夠對您有所幫助。

【編輯推薦】

  1. Oracle數據庫如何創建DATABASE LINK?
  2. 簡單介紹一下線程池和數據庫連接池的原理
  3. 網站設計的注意事項:數據庫集群和庫表散列
  4. 管理員不能刪除其他用戶建立的DB Link的解決
  5. Oracle數據庫對DDL語句和DML語句的事務管理
責任編輯:趙鵬 來源: 博客園
相關推薦

2010-07-01 15:50:18

SQL Server

2010-09-13 15:50:03

sql server數

2010-12-23 14:45:57

SQL Server

2011-02-28 10:57:56

2015-03-27 13:02:17

Azure SQL D微軟云數據庫

2012-01-05 09:45:31

微軟云數據庫SQL Azure

2009-06-25 09:46:04

2012-08-29 09:29:28

SQL Server

2010-07-21 15:57:39

SQL Server網

2010-06-17 16:00:59

SQL Server

2009-11-20 16:23:58

Oracle數據庫安全

2011-03-22 10:44:20

SQL Server數拆分字符串函數

2011-03-31 09:40:46

2010-06-17 16:06:07

SQL Server數

2009-08-07 14:02:12

C#數據庫連接字符串

2011-03-11 14:05:41

2011-03-25 09:46:16

Informix數據庫安全性安全審計

2012-12-28 09:36:08

SQL Server SQL Server安

2010-07-02 08:45:40

SQL Server

2010-06-04 14:59:06

MySQL數據庫
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 超碰av在线 | 黄色毛片在线看 | 欧美日韩一区二区三区四区 | 成人国产精品久久久 | 天天视频一区二区三区 | 国产精品无码久久久久 | 韩日av在线 | 国产在线视频在线观看 | 久久成人一区二区三区 | 我想看一级黄色毛片 | 91午夜在线 | 黄色毛片大全 | 九色视频网站 | 中文在线一区二区 | 国产一区二区视频在线观看 | 久色网| 91视频三区 | 日韩国产欧美在线观看 | 黄色免费网站在线看 | 欧美日韩一 | 欧美午夜精品理论片a级按摩 | 亚洲一区二区在线视频 | 久久精品亚洲欧美日韩精品中文字幕 | 中文字幕1区2区 | 日日拍夜夜 | 日韩电影免费在线观看中文字幕 | 国产日韩欧美精品一区二区 | 久久国产一区二区三区 | 亚洲精品一区二区冲田杏梨 | 美女天天操 | 午夜精品一区二区三区在线视频 | 国产精品黄 | 九九热精品视频 | 亚洲天堂影院 | 午夜精品一区二区三区三上悠亚 | 久久国产精品免费一区二区三区 | 中文字幕精品一区 | 久久亚洲天堂 | 色婷婷综合网站 | 亚洲一区二区中文字幕在线观看 | 欧美精品一区三区 |