2017-01-31 40 views
1

我在Excel模塊中使用下面的VBA腳本來允許使用預編程的用戶名和密碼連接到SQL服務器。連接運行一個基本的選擇查詢,但是我需要隱藏或加密密碼。我能想到的唯一方法是將密碼隱藏在另一張表中,鎖定VBA或從包含密碼的共享驅動器中調用文本文件。但是,這些方法似乎仍不安全。有誰知道可以在Excel VBA中實現的更好的安全方法嗎?Excel到SQL安全性

子ConnectSqlServer()

Dim txt As String 
txt = Sheets("Sheet1").Range("D1").Value 
If txt Like "*[A-Z]*" Or txt Like "*[;]*" Or txt Like "*[""]*" Then 
    a = MsgBox("Invalid" & vbNewLine & "Try again", okonly + vbCritical, "SECURITY WARNING") 
Exit Sub 

Else 

End If 

Dim conn As ADODB.Connection 
Dim rs As ADODB.Recordset 
Dim sConnString As String 

sConnString = "Provider=SQLOLEDB;Data Source=TESTSQLSERVER2012;" & _ 
       "Initial Catalog=MASTER;" & _ 
       "User ID=LOGINREADUSER;" & _ 
       "Password=123456789;" 

Set conn = New ADODB.Connection 
Set rs = New ADODB.Recordset 

conn.Open sConnString 
conn.CommandTimeout = 0 

Set rs = conn.Execute("SELECT [ACCOUNT],[NAME].[DOB]" & _ 
     "from [MASTER].[dbo].[CUSTOMER]" & _ 
     ";") 

If Not rs.EOF Then 
    Sheets("Sheet1").Range("A4").CopyFromRecordset rs 
    rs.Close 
Else 
    MsgBox "Error: No records returned.", vbCritical 
End If 

If CBool(conn.State And adStateOpen) Then conn.Close 
Set conn = Nothing 
Set rs = Nothing 

End Sub 
+0

即使那時VBA可能會被黑客入侵。你可以添加一個非密碼或訪客用戶訪問只有一個視圖,這是你的SQL? –

+0

提示用戶輸入每個實例的UserId和Password,或者讓您的SQL服務器使用Windows帳戶進行身份驗證。其他一切都是不安全的。 – cyboashu

回答

0

你不能。無論你如何處理密碼,你都無法對密碼進行硬編碼並保證安全。總是有方法從代碼中提取密碼。

迴應是,要麼有一個登錄提示,或者使用內置的Windows的身份驗證爲SQL Server。