2009-04-20 10 views
18

セキュリティ上の理由から、ユーザーの電子メールを暗号化してデータベースに格納する価値はありますか?ユーザーの電子メールアドレスをデータベースに保存する最も安全な方法は何ですか?

私はハッシュと塩のパスワードを知っていますが、これはパスワードのオリジナルが本当に必要ないという別の話です。電子メールとは異なります。

とにかく暗号化キーがデータベースの近くにあることがわかっているので、電子メールを暗号化するのは意味がありますか?私は誰かがシステムに入ると、彼らはキーが見つかるだろうと思っています。

ベストプラクティスは何ですか?共有/仮想ホスティングではなく自分のサーバーを実行する場合、他にも利用可能なオプションはありますか?

編集:私はSQL Serverを使用するつもりです。そして、いいえ、それはセキュリティ要件を備えた企業ソフトウェアではなく、私が心に留めているエンターテイメントサイトです。

答えて

12

今後メールアドレスが必要な場合は、平文で保存する必要があります。

もちろん、暗号化することはできますが、これは事実上、あいまいさによるセキュリティです。基本的に、アプリケーションの境界が安全な場合、その内部のデータはプレーンテキストにすることができます。ここで暗号化すると、データを扱う作業が複雑になりますが、攻撃者が生データを取得することは実際にはありません。

あなたが言っているように、彼が周囲の防衛を通過すると、彼は簡単に電子メールデータを解読するための解読鍵を得るでしょう。暗号化により、攻撃者はわずかに遅くなる可能性がありますが、実際のセキュリティはデータに追加されません。

最高のシナリオは、電子メールアドレスを(塩で!)ハッシュして保存することです。これにより、電子メールアドレスを入力値(例えば)と照らし合わせて、電子メールアドレスの入力が保存したものと同じであることを確認することができます。もちろん、この主な欠点は、電子メールの内容がわからないことですアドレスに付加価値がないので、定期的にユーザーにメールを送信したい場合は、運が悪いです。

有用なデータであるため、メールアドレスを保存していると思われます。はメールでメールを送信したいと思っています。その場合、暗号化するだけでそのデータを処理するだけで、その代償としてほとんど利益を得ることはできません。

この場合、データベース自体のアクセス(つまり「境界」防御)を確保し、データをデータベースにプレーンテキストで残しながら、できるだけ強固なものにすることに焦点を当てます。

13

うまくいけば、この回答はあなたの質問にも答えてくれるでしょう。要するに

Is it worth encrypting email addresses in the database?

、いや、それはユーザーの電子メールアドレスを暗号化する価値はありません。データベースの侵害により、誰かがあなたの暗号化を破るのに必要な鍵にアクセスする可能性が高いと考えるのは間違いありません。

+0

私はこの1つを見てきましたが、かなり狭いように見えました。私は電子メールセキュリティに関する考えを聞いてみたいです。 – User

+1

は時々サーバーブレークインは唯一の鍵を温存するため、データを保護し、攻撃者がデータベースの内容そのものを見ることができます。しかし、そうであることに頼るのは馬鹿げたことでしょう。 – tylerl

+0

私はこの質問に答える他の人に同意する必要があります。大部分の電子メールアドレスは、大丈夫にかかわらずスパムメールになります。通常、パスワードが「パスワード」で、誰かが自分のメールアドレスを見つけた場合、スパムをブロックすることはなく、暗号化の量はない。私は@ MaxVTのアドバイスに従いますが、電子メールアドレスのサニタイズ/検証を行います。 @ zoomzoom83のようなデータベース全体の暗号化を使用することは、あなたがまだセキュリティを心配しているなら、良い考えです。 –

1

アドレスにアクセスする頻度によって異なります。あなたがそれらをしばらく読んでいれば意味をなさないかもしれませんが、これは私が時間を費やす最後のセキュリティ問題の1つになります。

1

私はユーザーの電子メールを暗号化しません。重要な点は、データベースを保護することです。一旦それらが格納されると、電子メールを実際に使用したい場合には、キーはアクセス可能である。

妥当性とSQLインジェクションの可能性を確認してください。

1

アプリケーションサーバーとデータベースが別々のサーバー上にある場合、データベースのすべてまたは一部を暗号化するためにセキュリティが強化されます。

同じマシン上にあっても、ハッカーはパスワードの保存場所を把握していないかもしれませんが(私はそれには依存しませんが)

私は通常、ほとんどのエンタープライズデータベースが提供するデータベース全体の暗号化に頼って、アプリケーションレベルで電子メールを暗号化しません。

もちろん、MySQLのようなものを使用している場合は、アプリケーションレベルで行う以外に選択肢はありません。

通常、私のクライアントにはデータベースの暗号化に問題はありませんが、より厳しいプライバシー要件がある場合はそうするのが理にかなっています。

3

私は人々があなたのデータベースに来ることができるときに、それは多くの意味がちょうどあなたの電子メールアドレスを暗号化することはできない:)

とにかくねじ込まれると思います。あなたのデータベースには、収集したくない他の多くの情報がありますが、データベースが開かれていると同時に解読キーが届くはずです。

より高いレベルでセキュリティとデータの整合性のレイヤーを見つけることをお勧めします。だからあなたのデータベースに入る人の予防。

なぜメールアドレスが重要なのですか?大抵の人は迷惑メールを受け取り、そうでなければウェブ上のどこかで利用可能になるでしょう。

1

データベースの内容を暗号化することは、常に難しい問題です。暗号化されない限り、コンテンツは無意味であることは明らかです。人間の介入なしにそのようなことが起こらなければ、暗号文とキーの両方をどこかに保存しています。そののどこかが同じマシンにある場合、なぜあなたが悩まされたのか不思議に思うかもしれません。

これを行うには、いくつかの理由があります。 1つは、あなたがが必要な理由です。会社の方針のためにが必要です。もう1つは、データベースがアクセスするマシンよりも敵対的な環境にデータベースが格納されている可能性があります。

一般に、データベースのコンテンツを暗号化することはあなたの賞を獲得することはできませんが、それを正当化することができれば、そのような動機付けは明らかです。

7

一般的に私は努力する価値がないと言って他の人に同意します。しかし、私はあなたのデータベースにアクセスできる誰もがおそらくあなたの鍵を得ることができるとは思っていません。これは確かにSQLインジェクションには当てはまりませんが、何らかの形で失われたり忘れられたバックアップコピーには当てはまりません。私はメールアドレスが個人的な詳細だと感じています。だから私はスパムは気にしませんが、アドレスが明らかになったときの個人的な結果については気にしません。

もちろん、SQLインジェクションを恐れている場合は、そのようなインジェクションが禁止されていることを確認する必要があります。また、バックアップコピーは暗号化する必要があります。

まだ、一部のオンラインコミュニティでは、メンバーはメンタルヘルスケア、財政的支援、医療と性的アドバイス、アダルトエンターテインメント、政治などのメンバーであることを他人には明らかに知らせたくないかもしれません。)。これらの場合、可能な限り個人情報を少なく保存し、必要なものを暗号化します(データベースレベルの暗号化によってSQLインジェクションを使用して詳細が表示されることはありません)。再び:電子メールアドレスをそのような個人的な詳細として扱う。

これはおそらくそうではないでしょう.DをSQLインジェクションで禁止し、訪問者が何らかの方法で他の人のプロフィールにアクセスしたり、URLを変更して情報を注文できないようにすることに焦点を当てるべきです。コンピュータセキュリティで最も頻繁に引用truismsの

5

一つは のみ、真に安全なコンピュータが がオフになって、電源とネットワークケーブルカットで、コンクリートに埋もれ1であるということです。

これを念頭に置いて、電子メールアドレスを安全に保存するための最良の方法はありますか? まったく保管しないでください!

tl; dr電子メールアドレスまたは電子メールを送信する方法が必要ですか?あなたよりも優れた仕事をする人を信頼するか、電子メールアドレスをまったく使用しないでください。

なぜお客様のメールアドレスの記録を保持する必要がありますか?私はに実行した唯一の理由は、次のとおりです。私たちが何をしたいの

  • アカウント確認&認証
  • トランザクション&マーケティングメール

確認&認証

コアは2つの段階であります認証:彼らが知っているものと持っているもの。彼らが知っているものはパスワードであり、それを知っている唯一の人物なので簡単に証明できます。彼らが持っているものは証明することが難しく、伝統的に私たちは電子メールアドレスを使用するのは簡単です。これらの日私たちが使用することができ、他のものがあるけれども:携帯電話の検証

  • 携帯電話
  • アカウントの信頼できるウェブサイト(Facebookの、グーグル、ツイッター)とは簡単です。 twilio.comのようなサービスを使用してSMSを送信し、確認コードをテキストで送り返すよう依頼してください。モバイルは登録したい顧客に属していることがわかりました。 OpenIDを使用すると、他の信頼できるサイトで既存のアカウントを確認することができ、確認プロセスはそれらによって処理されます。

    お客様が認証するには、携帯電話番号とパスワード、またはOpenID認証トークンのいずれかを指定します。どちらも電子メールアドレスを必要としません(OpenIDプロバイダが責任を負うことはありません)。

    これらのオプションがない場合でも、メールアドレスを確認して認証に使用できます。確認では、一意のトークンが保存され、リンクが電子メールアドレスに送信される必要があります。電子メールアドレスの塩漬けされたハッシュを保存し、それを使ってパスワードと同じ方法でアカウントに一致させます。&マーケティングメール

    トランザクション

    我々は電子メールアドレスを格納したい理由本当の理由!だから私たちは彼らがそれを読むことなくそれを削除することができるように彼らが必要と思うもののオファーを送ることができます。真剣にメールは、このための最良の媒体ですか? OpenIDアカウントをお持ちの場合は、通知用にそのアカウントを使用しないでください。 Facebookのメッセージを送信したり、壁に書き込んだり、Twitterで@評価したり、モバイルにテキストメッセージを送信したり、アプリを構築したり、通知を送信したりすることができます。非常に多くのチャンネルが電子メールよりはるかに効果的です。

    あなたは電子メールを利用したい場合は

    はその後MandrillMailChimpのような電子メールプラットフォームを使用しています。彼らが登録すると、MailChimpのメーリングリストに加入者が作成されます。口座に加入者IDを格納します。取引の電子メール(パスワード、アカウントの更新をリセット)の場合、加入者をフェッチし、保存した電子メールをMandrillに渡して電子メールを送信します。大量のマーケティングについては、MailChimpのメーリングリストに送信してください。

    データベースに格納されている唯一のものは、加入者IDです。また、電子商取引はあなたの電子メールを配信する、より良い仕事をするなどの電子メールプラットフォームを追跡し、電子メールプラットフォーム、登録解除、オープンを使用してのすべての利点を提供し、クリックスルー率。彼らはまたあなたよりも自分のデータのプライバシーを保護する上でより良い仕事をします。データベースセキュリティの苦労をして、より多くの顧客を獲得することに集中できます。あなたは塩でそれをハッシュ場合

0

ええユーザにとって有用である可能性があります。私は前にコードを持っていました。私はそれを使って塩とハッシュを使用し、それを解読することができます。フローは、一度ユーザーがそれをハッシュと塩(暗号化プロセス)を登録します。次に、暗号化されたデータを取得する必要がある場合は、復号化が行われます。

関連する問題