• ベストアンサー

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

  • Access内の汎用モジュールにパスワードを平文(テキスト)で記載し、

    Access内の汎用モジュールにパスワードを平文(テキスト)で記載し、プログラムから利用しています。 単独使用なら平文で問題ないのですが、開発者も含め複数利用時にソース開くことでパスワードが漏れるのは困ります。 そこで、平文のパスワードを暗号化したいと考えました。 暗号化されたパスワードはソースを見ただけでは、元の平文のパスワードが何か分かりません。 しかし、プログラムから暗号化されたパスワードを復号化する際のメソッドを見れば、開発者は元の平文のパスワードが分かります。 メソッドにキーを与えないと復号化できないようにし、キーはバイナリで深い階層に沈めれば、直ぐには開発者でも平文のパスワードが分からない気がします。 VBAで書ける、このような方法を簡単に実装するものはありますでしょうか?もしくは良いフリーソフトもしくはシェアウェアはありますでしょうか?他の方法でも問題が解決すればOKです。 図解も含めてみました。つたない説明ですみませんが、どなたかお助け下さい。

  • Access VBA標準モジュールについてです。

    Access VBA標準モジュールについてです。 現在、仕事上必要にかられAccessVBAを勉強中の初心者です。初歩的な質問で申し訳ありませんが、ご存知の方教えて下さい。 フォーム上のコマンドボタンを押した時に標準モジュールを作動させたいのですが、そんな方法はありますか?【クラスモジュールについての本は沢山あって何とか理解できつつありますが、標準モジュールに関しての記述があまり無い気がします。】 宜しくお願いします。

  • 文字列の暗号化と復号化

    .NETで文字列を固定長に暗号化したい。(ユニコード対応できる) また、暗号化したものを復号化します。 .NETに付いている暗号化のモジュールはいくつがありますが、その以外のやり方がありましょうか? 例:何桁の平文を暗号化しでも8桁の十六進数又はBASE64の秘文になる。

  • 標準モジュールが1から3までありますが?

    エクセルVBEの画面を開くと、標準モジュールの下にモジュールが1から3まであります。 使い分けのルールのようなものはあるのですか? マクロの自動記録をしたらモジュール3に記述されていたのですが、通常、 自分で標準モジュールをを記述するときはモジュール1に記述するものですか?

  • FTPサーバとの通信でIDとパスワードが丸見え

    ホームページを更新するためのFTPサーバへの接続が暗号化に対応していないのでしょうか。 パケットキャプチャをすると、IDとパスワードが丸見えです。 IDとパスワードが平文で送られるので、盗聴されると丸見えになってしまうので心配です。 ※OKWAVEより補足:「ひかりTVのサービスやISPぷらら」についての質問です。

  • ファイルのパスワード設定と暗号化について

    お世話になります。 タイトルの件ですが、 ワードやExcel、一太郎などに標準のファイル自体にパスワードを かけることと、EDなどのソフトで、ファイル自体を暗号化してしまうと言うことはどこが違うのでしょうか? EDでも結局暗号化する際にかけるパスワードが分かってしまえば 同じ事だと思うのですが・・・。 安全面の事を考え、2重にロックがかけられるという点以外に、なにか暗号化するメリットがあれば教えてください。

  • パスワードの暗号化

    いつもお世話になっております。 今回はjavascriptをつかった暗号化についてお聞きしたいです。 パスワードをサーバーに送る際、そのまま送ると少し詳しい人なら丸わかりになってしまいます。 そこで暗号化をして送信したく、いろいろ探してみましたがなかなかいい方法が見当たりません。 des.jsというライブラリを見つけましたが、復号化のコードも書いてあり、簡単に復号できてしまうような気がします。 いろいろ探していていいと思ったのは、perlのcryptのような不可逆の暗号化の方法でした。 そのような方法はjavascriptにあるのでしょうか? またそれ以外でもなにかいい方法はありますでしょうか? 完全に隠蔽するのは不可能だということはわかっておりますが、 できる限りわかりにくくする方法を知りたいです。 以上の点、ご教授お願いいたします。

  • MySQLのログインを暗号化できますか?

    MySQLのログインを暗号化できますか? connectを張るときに"user id=○○; password=××; database=△△;Data Source=■■" をインターネット経由で送ってます。 この部分はオラクルだとデフォルトで暗号化されてるが、 MySQLでは平文のままだという話をききます。 1.平文のまま流れてるというのは本当なんでしょうか? 2.もし、平文のままなんだとすると、SSLみたく暗号通信化する方法は MySQL自体に実装されてるんでしょうか? それとも自前でトンネルを掘る必要があるんでしょうか? 平文のまま流れてるなら、いつかは盗聴されるように感じています。 上記について、ご存知の方おられましたらよろしくお願い申し上げます。

    • ベストアンサー
    • MySQL
  • PHPの可逆暗号化関数について

    こんにちは、現在PHP ver5とpostgreSQLでデータベースと連携させて使っているのですが、 テーブル内にデータを入れる際、今は平文のまま登録していますが、 この文字列を、暗号化してデータベースに登録し、取り出したい時に複合化して平文に戻せる関数はどういったものがあるでしょうか。 IDやパスワードといった文字列ではないので不可逆暗号化関数では元のデータベースの平文が分からなくなってしまうと思うのですが、 これを暗号化して登録しておき、抽出する際に元に戻す作業をしたいのです。 これってURLエンコード・デコードとは違いますよね・・・。 長くなりましてすみません。わかる方よろしくお願いします。

    • ベストアンサー
    • PHP
  • クラスモジュールを使わないとできないこと

    エクセル、アクセスでvbaを利用しています。 現在はすべて標準モジュールに記載しているのですが 「クラスモジュールを使わないとできないこと」もあるのでしょうか? クラスモジュールの使い方、必要性がいまいちわかりません。 まだ初心者な為複雑なコードは作っていません。 よろしくお願いします。