PHPでIMAPサーバからメールを取得しようと思っています。
IMAPサーバに繋ぐときにどうしてもユーザのメールアドレスとパスワードが必要になりますがDBに生で保存しない(opensslで暗号化するなどして)にしても、ソースとDBが流出したらユーザのアカウント情報が解析されてしまいますよね。
この辺りどのようにしたらセキュアに実装できるのでしょうか?
マネーフォワードとかどうやってるんですかね?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答6件
0
ジャストアイディアなんでちゃんとした回答が来たらあっさり取り下げるかもしれませんが
- どうしたって復号可能な形で持たざるを得ません
- そこで、IMAPパスワードをユーザーごとに別々のキーで暗号化します
- そのユーザーごとのキーというのは、ユーザーのログインパスワードに何らかのハッシュ関数をかけたものにします
ユーザー本人にしか生成できないキーになります
- ユーザーがログイン成功した際にIMAPパスワード復号用のキーもハッシュ関数により作成して、セッションにだけ保存するという形にします。ソースとDBが漏洩してもIMAPパスワードは復号できません。
- 問題はユーザーがログインパスワードを忘れてパスワード再設定をしたときです。IMAPパスワードは誰にも復号できなくなります。
そのときはそのときで仕方ないんで、IMAPつなぐときにIMAPパスワードを再入力してもらえば良いのではないかなと。
投稿2018/07/09 11:59
総合スコア5568
0
過去にした質問が参考になりそうなのでリンクしておきます。
暗号化すべき情報とは?
非常に興味深い回答を頂いています。
投稿2018/07/09 13:04
退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
ソースとDBが流出したらユーザのアカウント情報が解析されてしまいますよね。
これを前提としたら何やったって無駄なので、「IMAPサーバに繋ぐときにどうしてもユーザのメールアドレスとパスワードが必要になりますがDBに生で保存しない」ここは暗号化しようが平文で保存しようが関係ないことになります。
「ソースとDBが流出し」ないようにアプリケーションを作成することです。
投稿2018/07/09 11:59
退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/07/09 12:22
退会済みユーザー
2018/07/09 13:15
2018/07/09 13:31
退会済みユーザー
2018/07/09 13:38
0
可逆圧縮、非可逆圧縮をご存知でしょうか?”暗号化”ではなく”圧縮”です。
可逆圧縮の例:zipやlzh←元に戻せる
非可逆圧縮:BMP→png、音などをmp3にしたり。←元に戻せない
似たように可逆暗号化、非可逆暗号化と言うのもあります。
可逆暗号化の場合はkey(アルゴリズム)さえ分かれば復号できますが、非可逆暗号化は暗号化されたワードに対して復号することはできません。
会員登録時に非可逆暗号化アルゴリズムを通したユーザーパスワードをDBに保存しておき、ログイン時に送信されたユーザーパスワードを同一の非可逆暗号化アルゴリズムを行い、DBに保存しておいた非可逆済みパスワードと比較し真偽を確かめる方法もあります。
すべてを非可逆暗号化だと都合が悪いのでメールなどは可逆暗号化(もしくは暗号化しない)、パスワードは非可逆暗号化などをする手法もあります。
投稿2018/07/09 12:47
総合スコア1480
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/07/09 12:53
2018/07/09 15:37
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/07/09 12:24
退会済みユーザー
2018/07/09 15:30