プログラミング作法について教えて下さい.
独学で勉強中なのですが,cronで定期的にwebサービス等にログインしてゴニョゴニョしたいのですが,プログラムコードの中にアカウントのパスワード等ハードコードをするのは気が引けます.
皆様はどういった方法で処理しているのでしょうか?お教え下さい.
プログラム起動時に設定ファイルを読み込むようにして、その設定ファイルの中にパスワードやAPI keyを書けるようにする、ということを良くやります。ソース自体はgithubなど公開の場に出すことも多いので。公開ソースにはダミーのサンプル設定ファイルを含めておいて、自分が実際に使うものはローカルで自分だけが読めるようにして管理しておきます。
設定ファイルが取られたらパスワードが漏れちゃいますが、そもそも自分の手元だけにあるはずの設定ファイルが読み取られる状況ならsshの秘密鍵だって取られちゃう状況なので気にしても意味がないでしょう。
暗号化してプログラム内に書いておくというのは疑問です。外部サービスにログインするためのパスワードならプログラム内で復号してるわけですから、プログラムソースを手にした人は誰でも簡単に元のパスワードに戻せます。ソースを絶対に外に出さない、という自信があるなら平文で書いておいても一緒です。
MD5とか,ハッシュ関数で暗号化してコーディングすればOKです。
手軽に実現したいのであれば,暗号化されたパスワードをソースコード中に埋め込む場合もあります(PHPのPukiWikiみたいに)
たくさんのパスワードを格納する場合は,暗号化したパスワードをデータベース中に保管しておいて,DBに接続しないかぎりパスワードが見えないように工夫します。
回答ありがとうございます.
なるほどやはり暗号化したほうがいいのですね.
プログラム起動時に設定ファイルを読み込むようにして、その設定ファイルの中にパスワードやAPI keyを書けるようにする、ということを良くやります。ソース自体はgithubなど公開の場に出すことも多いので。公開ソースにはダミーのサンプル設定ファイルを含めておいて、自分が実際に使うものはローカルで自分だけが読めるようにして管理しておきます。
設定ファイルが取られたらパスワードが漏れちゃいますが、そもそも自分の手元だけにあるはずの設定ファイルが読み取られる状況ならsshの秘密鍵だって取られちゃう状況なので気にしても意味がないでしょう。
暗号化してプログラム内に書いておくというのは疑問です。外部サービスにログインするためのパスワードならプログラム内で復号してるわけですから、プログラムソースを手にした人は誰でも簡単に元のパスワードに戻せます。ソースを絶対に外に出さない、という自信があるなら平文で書いておいても一緒です。
回答ありがとうございます.
確かに読み取られる状況でしたら暗号化しても意味はありませんね.
例えば,クラウドストレージにはプログラミング本体のみ同期して設定ファイルは手元で管理とゆうのが現実的なのかもしれませんね.
回答No.2の方が言うように、設定ファイルが良いでしょう。
プログラム作方についてとのことですが、要件によってプログラムの作り方は変ります。
回答No.1の方はプライベートで使用する場合とサービスで使用する場合を言っていますね。
しかし、値をハードコードにするのは薦めません。
コンピュータは、束縛からの開放によって発展してきたのですから、自由度を確保することが価値に繋がります。
回答ありがとうございます.
>コンピュータは、束縛からの開放によって発展してきたのですから、自由度を確保することが価値に繋がります。
肝に銘じます.
回答ありがとうございます.
2013/10/16 22:37:54確かに読み取られる状況でしたら暗号化しても意味はありませんね.
例えば,クラウドストレージにはプログラミング本体のみ同期して設定ファイルは手元で管理とゆうのが現実的なのかもしれませんね.