- ベストアンサー
ACCESSでモジュールに記入したパスワードを暗号化するには
VBAの標準モジュールへconstでパスワードを記述しており平文のままです。 自分以外の第3者が利用するとパスワードが丸見えになってしまいます。 暗号化をするにはどうしたら良いでしょうか。
- みんなの回答 (8)
- 専門家の回答
質問者が選んだベストアンサー
>第3者が利用するとパスワードが丸見えになってしまいます。 それはプログラムを利用していて(例えばログイン画面であらかじめ値がセットされているから)丸見えなのか、 ソースコード中に private Const PassWord ="Hoge" とか書いているから丸見えなのかどちらでしょう? 前者であれば表示しているテキストボックス(仮定)の表示を"*"で表示するように設定を変えればよいですし、 後者であればVBEにパスワード認証を設ければよいのでは? また、Accessファイルを開くときにパスワード認証をする事も可能です。 パスワードは『歯ブラシとパスワードはこまめに変えろ』が常識ですから、固定値にすること自体好ましくないです。 コーディングできない人間が管理することを想定しているなら、なおのことプログラム中に埋め込むのはどうかと思いますよ。 テーブルにでも格納しておく(+ Accessのパスワード認証)のがよいのでは?
その他の回答 (7)
私が言いたかったのは 個人のパスワードの文字列を管理者が見れるという状況が望ましくない場合、それをハッシュ化したものをパスワードとして扱うという方法をNo1の方が提示されているということです。 ユーザーがフォーム上にパスワードを入れた後、認証する際にハッシュ化を行い、保存されている(すでにハッシュ化した)パスワードと比べ合致するかどうかの確認を行うということです。 管理者はユーザーがどんな文字列をパスワードとして入力しているのかはわかりません。 しかしこの方法は実際のパスワードを隠しているわけではないので、コード上に書かれている文字列を隠すのには役に立たないと思ったしだいです。 コードにじかに書きたくないなら、拡張子をかえた外部ファイルとしておいておくか、DLLにしてしまうとか、レジストリに格納してしまうとか、方法はあると思います。 しかし、どれもコードが見える段階では(実際にパスワードの取り出し方をコーディングしなければならないので)あまり意味がないと思いました。 そのようなわけで、コードは見せないという案を提案したわけです。
No2です。他人の話に首を突っ込むのはマナー違反かもしれませんが、 No1の方の回答は、管理者に知られたくないパスワード等をどのように管理するべきなのかという問題に対する回答です。 どのようにコードを暗号化するのかということは別問題です。 文字列をどんなに複雑化して巧妙に隠したところで、VBコードに触れることができる人に対しては、debug.print 一行でばれてしまいます。 また、アクセス自体、セキュリティに関しては非常に弱い部分があると思います。 最新のアクセスのセキュリティについては詳しく知りませんが、過去の経験からするとデータベースパスワードをクラックするのは結構簡単にできると思います。 アクセス自体のセキュリティをあまり当てにしてはいけません。 守りたいものがあるなら、コードは見せないというのが原則です。
- JAWS55
- ベストアンサー率38% (176/452)
COM? OLEでAccessを呼び出すのでしょうか?
補足
端折ってしまいすみません。 AccessからAPIを呼び出しパスワードを渡します。
- JAWS55
- ベストアンサー率38% (176/452)
>不可逆なのでパスワードを表示したい場合 表示できたらセキュリティが確保できません。パスワードを復旧(表示)する事は不可能です。
補足
表現が適切でなくすみません。 例えばパスワードをCOMで利用するとしたらどうでしょう?
No2です。 mdeはコードの改変ができませんので、現在開発中なのであれば フロントエンドとデータ部分を分けておいたほうが便利です。
モジュールがさわれる時点でセキュリティは ないと思ったほうがよいでしょう。 他者に利用していただく分をMDEにするしかないのでは?
お礼
ありがとうございます。 その通りですね。 MDEのやり方がわからないのですが、参考になるHPなどありましたでしょうか。
- JAWS55
- ベストアンサー率38% (176/452)
constで記述しないで、テーブルを作成してそのテーブルに格納するようにしたらどうでしょうか? パスワードを入れる項目をテキスト型にして定型入力を”パスワード”にすればテーブルを表示してもパスワードはわかりません。 参考:http://www.accessclub.jp/bbs5/0015/vba4329.html
お礼
ありがとうございます。 大変助かりました。
補足
コメント後ですみませんが、リンク先はMD5で暗号化とあります。 不可逆なのでパスワードを表示したい場合はどうすればよいでしょうか?
補足
老婆心ながら管理者はパスワードを知っている必要があります。 (管理者以外と仰られたかったのだと思いますが) 管理者以外には知られたくないです。 MD5は双方向でなく不可逆ですがばれるんでしょうか? accessですから当然小規模な開発であり、パスワードを簡単にクラックできるような望まない管理者以外が触れるような環境まで考える必要はありません。 プログラムが良く分からない管理者以外が触れることを想定しています。 先方の回答は専門的ですばらしいですが、No.1の方の回答も要領の良い的を得た回答だと判断しております。 ただ、パスワードをプログラムから利用したいのでMDE化するしかないかと考えております。