- PR -

VB6 + SQL2000 の接続でパスワード情報をソースに直書きしなくて良い方法はないでしょうか。

1
投稿者投稿内容
McLaren
ぬし
会議室デビュー日: 2002/01/15
投稿数: 784
お住まい・勤務地: 東京
投稿日時: 2004-04-15 10:10
 下記は渡されたSQL文を単純に実行するだけの関数ですが、ローカルのSQLserverへの接続情報としてパスワードをソースに直書きしないといけないのがどうも気持ち悪いです。
何か良い方法はないでしょうか。
=============================================================
Sub ExecuteSQL(strSQL As String)
Dim cn As ADODB.Connection

Set cn = New ADODB.Connection
cn.ConnectionString = "provider=SQLOLEDB;server=localhost;database=MS3;uid=sa;password=12345"
cn.Open
cn.Execute strSQL
cn.Close
Set cn = Nothing
End Sub
=============================================================
AccessプロジェクトでADPファイルで作れば済みますが、インターフェイスがしょぼいのでどうしてもVB6でやりたいと思っております。何卒ご教授願います。
ラフィン
ぬし
会議室デビュー日: 2002/05/23
投稿数: 809
お住まい・勤務地: 外野
投稿日時: 2004-04-15 10:30
こんにちは。

1.Windows認証を使う
2.ID,パスワードを暗号化しておく

あたりでどうでしょうか。
McLaren
ぬし
会議室デビュー日: 2002/01/15
投稿数: 784
お住まい・勤務地: 東京
投稿日時: 2004-04-15 16:32
ご返信ありがとうございます。

SQL2000は混合モードで立ち上げております。その場合、VB側のソースは

=============================================================
Sub ExecuteSQL(strSQL As String)
Dim cn As ADODB.Connection

Set cn = New ADODB.Connection
cn.ConnectionString = "provider=SQLOLEDB;server=localhost;database=MS3"
cn.Open
cn.Execute strSQL
cn.Close
Set cn = Nothing
End Sub
=============================================================
でいけるのでしょうか。

 また、SQL2000サーバー側でも「このNTユーザーはこれこれを許す」などの設定をしておかなければならないと思のですが、初めてでしてよくわかりません。

 もともとクライアントには sa とそのパスワードを記述したexeを実行さそうとしていたくらいですので、DBには「すべてのNTユーザーはDBに接続可能、かつSELECT、INSERT、UPDATE、DELETEが可能」としておいてもいいです。どこを設定すればよろしいでしょうか。事前にいろいろ実験できない事情がございまして、何から何までご質問になりますが、何卒ご教授のほどよろしくお願いします。
ラフィン
ぬし
会議室デビュー日: 2002/05/23
投稿数: 809
お住まい・勤務地: 外野
投稿日時: 2004-04-17 09:01
引用:

okumuraさんの書き込み (2004-04-15 16:32) より:

 もともとクライアントには sa とそのパスワードを記述したexeを実行さそうとしていたくらいですので、DBには「すべてのNTユーザーはDBに接続可能、かつSELECT、INSERT、UPDATE、DELETEが可能」としておいてもいいです。どこを設定すればよろしいでしょうか。事前にいろいろ実験できない事情がございまして、何から何までご質問になりますが、何卒ご教授のほどよろしくお願いします。



 何から何までご質問はご勘弁を

>DBには「すべてのNTユーザーはDBに接続可能、
>かつSELECT、INSERT、UPDATE、DELETEが可能」としておいてもいいです。
 ですと、SQLServerにsa以外のアカウントを作成してそれでアクセスするようにする。
その方がソースにアカウント・パスワードを書いていたとしてもセキュリティ上はマシのように思います。
 ユーザーだのパスワードを返すインチキ関数を作ってConnectionStringを文字列連結を作るようにして、ソースを公開しなければよいレベルなのでは?

 Windows認証はNTドメインへのログインでのシングルサインオンを許すもの。
 SQLServerへのアクセスは業務アプリ以外(Excel,Access)でも可能なこと。
 ODBCデータソース作成時のデフォルトはWindows認証であること。
 SQLServerは自ら"ここにいるよ"と広報していること。

>事前にいろいろ実験できない事情がございまして
 ということは答える方も無責任に答えられないですし、ここで聞きながら試してみるより安直に小細工すればいいんじゃないでしょうか?

 素朴な疑問:
・そこまでコーディングしておいて、試さずに答えを聞くのは何故でしょう?
・接続を試すのに単なる接続かSelectでなく、いきなりExecuteっていったい?
McLaren
ぬし
会議室デビュー日: 2002/01/15
投稿数: 784
お住まい・勤務地: 東京
投稿日時: 2004-04-19 08:49
 それもそうですね(爆笑)。すみません。自分で書いておいて笑ってしまいました。矛盾も含めていろいろ事情がありまして。。(泣)

 ラフィンさんのおっしゃる通りです。たくさんのアドバイスありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)