2017-01-31 3 views
1

Я использую сценарий VBA ниже в модуле Excel, чтобы разрешить подключение к SQL-серверу с предварительно запрограммированным именем пользователя и паролем. Соединение запускает основной запрос выбора, однако мне нужно скрыть или зашифровать пароль. Единственные методы, о которых я могу думать, скрывают пароль на другом листе, блокируют VBA или вызывают текстовый файл с общего диска, который содержит пароль. Однако эти методы все еще кажутся небезопасными. Кто-нибудь знает о более эффективном методе безопасности, который может быть реализован в excel VBA?Excel к безопасности SQL

Sub 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 и пароль для каждого экземпляра, либо получите ваш SQL-сервер для аутентификации с учетной записью Windows. Все остальное небезопасно. – cyboashu

ответ

0

Вы не можете. Вы не можете жестко задавать пароль и быть в безопасности, независимо от того, что вы делаете с ним. Всегда есть способы извлечь пароль из кода.

В ответ на это либо запросите вход в систему, либо используйте встроенный windows-auth для SQL-сервера.

Смежные вопросы