2017-01-31 4 views
1

以下のVBAスクリプトをExcelモジュールで使用して、事前に設定されたユーザー名とパスワードでSQLサーバーに接続できるようにします。接続は基本的な選択クエリを実行しますが、パスワードを隠すか暗​​号化する必要があります。私が考えることができる唯一の方法は、別のシートにパスワードを隠したり、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

ユーザーごとにユーザーIDとパスワードを入力するか、WindowsサーバーでSQLサーバーを認証するように求めます。それ以外は危険です。 – cyboashu

答えて

0

あなたがすることはできません。あなたがパスワードを使って何をしていても、パスワードをハードコードして安全にすることはできません。コードからパスワードを抽出する方法は常にあります。

これに応答して、ログインプロンプトを表示するか、SQLサーバー用のinbuilt windows-authを使用します。

関連する問題