質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.53%

  • PHP

    20252questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • MySQL

    5831questions

    MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

  • IMAP

    13questions

    IMAP (Internet Message Access Protocol) とは、メールサーバー上の電子メールデータを操作するためのプロトコルです。

DBにアカウント情報を保存する

解決済

回答 6

投稿

  • 評価
  • クリップ 2
  • VIEW 270

millionx

score 18

PHPでIMAPサーバからメールを取得しようと思っています。
IMAPサーバに繋ぐときにどうしてもユーザのメールアドレスとパスワードが必要になりますがDBに生で保存しない(opensslで暗号化するなどして)にしても、ソースとDBが流出したらユーザのアカウント情報が解析されてしまいますよね。

この辺りどのようにしたらセキュアに実装できるのでしょうか?
マネーフォワードとかどうやってるんですかね?

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 6

+4

ジャストアイディアなんでちゃんとした回答が来たらあっさり取り下げるかもしれませんが

  • どうしたって復号可能な形で持たざるを得ません
  • そこで、IMAPパスワードをユーザーごとに別々のキーで暗号化します
  • そのユーザーごとのキーというのは、ユーザーのログインパスワードに何らかのハッシュ関数をかけたものにします
    ユーザー本人にしか生成できないキーになります
  • ユーザーがログイン成功した際にIMAPパスワード復号用のキーもハッシュ関数により作成して、セッションにだけ保存するという形にします。ソースとDBが漏洩してもIMAPパスワードは復号できません。
  • 問題はユーザーがログインパスワードを忘れてパスワード再設定をしたときです。IMAPパスワードは誰にも復号できなくなります。
    そのときはそのときで仕方ないんで、IMAPつなぐときにIMAPパスワードを再入力してもらえば良いのではないかなと。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/07/09 21:24

    何かしらをキーにして暗号化するのがいいのかなと思っていましたが、それ以上のアイデアや手法があればなと思った次第です。

    キャンセル

  • 2018/07/10 00:30

    ブラウザ変えたり、cookie 削除してもアウトかと。
    session に恒久的に必要な情報を入れるのはだめだと思います。

    キャンセル

+2

ソースとDBが流出したらユーザのアカウント情報が解析されてしまいますよね。 

これを前提としたら何やったって無駄なので、「IMAPサーバに繋ぐときにどうしてもユーザのメールアドレスとパスワードが必要になりますがDBに生で保存しない」ここは暗号化しようが平文で保存しようが関係ないことになります。

「ソースとDBが流出し」ないようにアプリケーションを作成することです。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/07/09 21:22

    平文はシステム管理者に駄々洩れなのでよくないと思います。

    キャンセル

  • 2018/07/09 22:15

    > 平文はシステム管理者に駄々洩れなのでよくないと思います。
    そのレベルの心配をしなくてはならない管理状況であれば、機密情報を取り扱ってはマズイです。。。

    キャンセル

  • 2018/07/09 22:31

    >te2jiさん
    すいません、意図がくみ取れませんでした。

    キャンセル

  • 2018/07/09 22:38

    一般的に管理者に対しては、教育と契約で縛ります。
    それがセキュアでないという状況なのであれば、機密情報を取り扱う資格が無いです。
    *ただし、対策をしないということと同意ではありません。

    体制に対してセキュリティポリシーの無い場合に見かけるコメントなので、そこから整理されるのが適切です。

    キャンセル

+2

過去にした質問が参考になりそうなのでリンクしておきます。
暗号化すべき情報とは?

非常に興味深い回答を頂いています。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/07/09 22:31

    ありがとうございます。読んでみます。

    キャンセル

+1

可逆圧縮、非可逆圧縮をご存知でしょうか?”暗号化”ではなく”圧縮”です。

可逆圧縮の例:zipやlzh←元に戻せる
非可逆圧縮:BMP→png、音などをmp3にしたり。←元に戻せない


似たように可逆暗号化、非可逆暗号化と言うのもあります。

可逆暗号化の場合はkey(アルゴリズム)さえ分かれば復号できますが、非可逆暗号化は暗号化されたワードに対して復号することはできません。

会員登録時に非可逆暗号化アルゴリズムを通したユーザーパスワードをDBに保存しておき、ログイン時に送信されたユーザーパスワードを同一の非可逆暗号化アルゴリズムを行い、DBに保存しておいた非可逆済みパスワードと比較し真偽を確かめる方法もあります。

すべてを非可逆暗号化だと都合が悪いのでメールなどは可逆暗号化(もしくは暗号化しない)、パスワードは非可逆暗号化などをする手法もあります。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/07/09 21:53

    質問者様の質問内容はそういうことではなさそうです。

    キャンセル

  • 2018/07/10 00:37

    定義上、暗号というのは復号して平文に戻せなければ意味がないので、非可逆暗号というのはちょっとおかしな話になるんですけどね。
    ※最初から「復号しても意味のない文を発信して、傍受している敵を混乱させる」なんてのは使い方の問題ですし
    書かれているのはハッシュ関数等による非可逆圧縮であって、暗号ではないのです。

    キャンセル

0

IMAPのどこにRDBが介在するという想定なのかわかりませんが
RDBの情報を元にメールサーバーにアクセスするのが必須であれば
生テキストで保持するしか無いので、DBが流出なんてしたら
すべての情報がだだ漏れですね
そもそもRDBに保持する意味はないので適宜ユーザーが管理すれば
いいだけでは?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/07/09 21:21

    毎回入力してたら大変ですよね...

    キャンセル

check解決した方法

-2

何かしらをキーにして暗号化して保存することにします。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/07/12 01:33

    > 何かしらをキーにして暗号化して保存することにします。

    キーにする何かによっては、平文と同程度にしか守られないことを理解していますか?

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.53%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 受付中

    herokuを使っている独自ドメインのメールアドレス取得について

    herokuで独自ドメインでサイトを運営しているのですが、その際にサイトのアドレスingo@hogehoge.comなどのメールアドレスは、Herokuで取得するのですか? それと

  • 解決済

    共有フォルダアクセスについて

    共有フォルダについて困っています。 OS:Windows Server 2012 R2 ある市販のジョブ管理システムで実行されるバッチファイルに記述されている共有フォルダへのアク

  • 解決済

    【CentOS7】リモートでアカウントを作成する方法

     前提 Linuxや、サーバ設定に詳しくありません。 専門用語などを避けていただけると幸いです。  質問概要 鍵認証のみで、遠隔ログインできるCentOS7のマシンに、

  • 受付中

    command not foundが発生している

    前提・実現したいこと Raspberry PiにApacheを導入しようとしています。 以下ページを参考に作業を進めました。 <http://qiita.com/yh2020

  • 受付中

    さくらサーバー間の過去受信メールの移動

    前提・実現したいこと 先日さくらサーバーにてさくらサーバー同士(スタンダード→ビジネス)でサーバー移管をしました。 旧さくらサーバーでの過去の受信メールを新さくらサーバーへと移

  • 解決済

    Postfixが正しく起動しない

    以下を参考にVPSでメールサーバーを立てようとしています。 https://centossrv.com/postfix.shtml Postfix、Dovecotともにエラーな

  • 解決済

    WorkMailで受信したメールをGmailで見たい

    AWSのWorkMailを開設しました。 WorkMailで受信したメールをGmail画面で見たいと思っているのですが、設定方法がわかりません。 どなたかご存知の方いらっしゃれば教

  • 解決済

    共有フォルダに接続できない

    Windows Server 2012 R2 StandardのActive Directory環境下で、 ドメイン参加済みのクライアントPCにログイン後、ドメイン環境の共有フォル

同じタグがついた質問を見る

  • PHP

    20252questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • MySQL

    5831questions

    MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

  • IMAP

    13questions

    IMAP (Internet Message Access Protocol) とは、メールサーバー上の電子メールデータを操作するためのプロトコルです。