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