• ベストアンサー

ACCESSでモジュールに記入したパスワードを暗号化するには

VBAの標準モジュールへconstでパスワードを記述しており平文のままです。 自分以外の第3者が利用するとパスワードが丸見えになってしまいます。 暗号化をするにはどうしたら良いでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • shiro-joe
  • ベストアンサー率22% (15/66)
回答No.8

>第3者が利用するとパスワードが丸見えになってしまいます。 それはプログラムを利用していて(例えばログイン画面であらかじめ値がセットされているから)丸見えなのか、 ソースコード中に private Const PassWord ="Hoge" とか書いているから丸見えなのかどちらでしょう? 前者であれば表示しているテキストボックス(仮定)の表示を"*"で表示するように設定を変えればよいですし、 後者であればVBEにパスワード認証を設ければよいのでは? また、Accessファイルを開くときにパスワード認証をする事も可能です。 パスワードは『歯ブラシとパスワードはこまめに変えろ』が常識ですから、固定値にすること自体好ましくないです。 コーディングできない人間が管理することを想定しているなら、なおのことプログラム中に埋め込むのはどうかと思いますよ。 テーブルにでも格納しておく(+ Accessのパスワード認証)のがよいのでは?

その他の回答 (7)

noname#60992
noname#60992
回答No.7

私が言いたかったのは 個人のパスワードの文字列を管理者が見れるという状況が望ましくない場合、それをハッシュ化したものをパスワードとして扱うという方法をNo1の方が提示されているということです。 ユーザーがフォーム上にパスワードを入れた後、認証する際にハッシュ化を行い、保存されている(すでにハッシュ化した)パスワードと比べ合致するかどうかの確認を行うということです。 管理者はユーザーがどんな文字列をパスワードとして入力しているのかはわかりません。 しかしこの方法は実際のパスワードを隠しているわけではないので、コード上に書かれている文字列を隠すのには役に立たないと思ったしだいです。 コードにじかに書きたくないなら、拡張子をかえた外部ファイルとしておいておくか、DLLにしてしまうとか、レジストリに格納してしまうとか、方法はあると思います。 しかし、どれもコードが見える段階では(実際にパスワードの取り出し方をコーディングしなければならないので)あまり意味がないと思いました。 そのようなわけで、コードは見せないという案を提案したわけです。   

noname#60992
noname#60992
回答No.6

No2です。他人の話に首を突っ込むのはマナー違反かもしれませんが、 No1の方の回答は、管理者に知られたくないパスワード等をどのように管理するべきなのかという問題に対する回答です。 どのようにコードを暗号化するのかということは別問題です。  文字列をどんなに複雑化して巧妙に隠したところで、VBコードに触れることができる人に対しては、debug.print 一行でばれてしまいます。   また、アクセス自体、セキュリティに関しては非常に弱い部分があると思います。 最新のアクセスのセキュリティについては詳しく知りませんが、過去の経験からするとデータベースパスワードをクラックするのは結構簡単にできると思います。 アクセス自体のセキュリティをあまり当てにしてはいけません。 守りたいものがあるなら、コードは見せないというのが原則です。

ton_jiru
質問者

補足

老婆心ながら管理者はパスワードを知っている必要があります。 (管理者以外と仰られたかったのだと思いますが) 管理者以外には知られたくないです。 MD5は双方向でなく不可逆ですがばれるんでしょうか? accessですから当然小規模な開発であり、パスワードを簡単にクラックできるような望まない管理者以外が触れるような環境まで考える必要はありません。 プログラムが良く分からない管理者以外が触れることを想定しています。 先方の回答は専門的ですばらしいですが、No.1の方の回答も要領の良い的を得た回答だと判断しております。 ただ、パスワードをプログラムから利用したいのでMDE化するしかないかと考えております。

  • JAWS55
  • ベストアンサー率38% (176/452)
回答No.5

COM? OLEでAccessを呼び出すのでしょうか?

ton_jiru
質問者

補足

端折ってしまいすみません。 AccessからAPIを呼び出しパスワードを渡します。

  • JAWS55
  • ベストアンサー率38% (176/452)
回答No.4

>不可逆なのでパスワードを表示したい場合 表示できたらセキュリティが確保できません。パスワードを復旧(表示)する事は不可能です。

ton_jiru
質問者

補足

表現が適切でなくすみません。 例えばパスワードをCOMで利用するとしたらどうでしょう?

noname#60992
noname#60992
回答No.3

No2です。 mdeはコードの改変ができませんので、現在開発中なのであれば フロントエンドとデータ部分を分けておいたほうが便利です。

参考URL:
http://oshiete1.goo.ne.jp/qa188513.html
noname#60992
noname#60992
回答No.2

モジュールがさわれる時点でセキュリティは ないと思ったほうがよいでしょう。 他者に利用していただく分をMDEにするしかないのでは?

ton_jiru
質問者

お礼

ありがとうございます。 その通りですね。 MDEのやり方がわからないのですが、参考になるHPなどありましたでしょうか。

  • JAWS55
  • ベストアンサー率38% (176/452)
回答No.1

constで記述しないで、テーブルを作成してそのテーブルに格納するようにしたらどうでしょうか? パスワードを入れる項目をテキスト型にして定型入力を”パスワード”にすればテーブルを表示してもパスワードはわかりません。 参考:http://www.accessclub.jp/bbs5/0015/vba4329.html

ton_jiru
質問者

お礼

ありがとうございます。 大変助かりました。

ton_jiru
質問者

補足

コメント後ですみませんが、リンク先はMD5で暗号化とあります。 不可逆なのでパスワードを表示したい場合はどうすればよいでしょうか?

関連するQ&A