【メールアドレス流出対策】データベースに保存されているメールアドレスを流出させないために、出来ることを教えて下さい。


DB:共用レンタルサーバのDB(MYSQL)
Email:「xxx@yyy.zzz」に送信された携帯からのメールをPHP(mimeDecode.php)で解析して、アドレスを自動でDBに登録
現在は、上記のようにデータを蓄積しており、
登録されているメールアドレスにはお知らせメールが定期的に送られます。

上記のことを踏まえて回答していただけるとありがたいですが、この機会にどのような対策があるか、網羅的に知っておきたいので、取り得る全ての対策を教えて貰えたらと思っています。
はてな会員の皆様、よろしくお願いします。

※お奨めな本があれば、それでも良いのでURLを貼って下さい。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2008/05/13 19:39:59
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:pahoo No.1

回答回数5960ベストアンサー獲得回数633

ポイント50pt

思いついたことを列挙します。

  1. DBファイル本体はWebサーバの管理外(httpd.confで指定されていない)のディレクトリに配置する。
  2. DBにアクセスできるPHPスクリプトは、ログインパスワードを設けるなどして、第三者に利用できないようにする。また、SQLインジェクション対策を施す。
  3. DBログインID、パスワードを記述したPHPスクリプトは1本のincludeファイルにする(ID、パスワードを記したファイルを幾つも作らない)。このファイルは、.htpasswd などによりログイン認証が必要であるようなセキュアなディレクトリに配置する。
  4. 格納するメールアドレスを暗号化する。たとえば公開鍵暗号方式の公開鍵で暗号化しておき、秘密鍵は質問者のローカルPCに置いておきます。手動でメール送信指示を行い、その都度、秘密鍵をサーバへ送ります。

いずれにしても、「絶対に漏れない」という対策はありません。そこで、下記の対策も必要です。

  1. DBへのアクセスログを保管する。
  2. Webサーバのアクセスログを保管する。
  3. 携帯サイトにプライバシーポリシーを明記し、免責条項を明記しておく。

また、メールを自動配信するというのはサイト運営を省力化できて便利なのですが、乗っ取られた際のリスクを考えると、送信指示だけは手動で行った方が安全だと思います。

id:fashion0208

>pahoo様

お世話になってますm(_ _)m

非常に参考になりました。早速4番を試してみます!

(追記)

http://f.hatena.ne.jp/images/fotolife/f/fashion0208/20080508/200...

上のような感じにしたらどうでしょう。

サーバ2を断定することは可能でしょうか。

2008/05/08 15:59:00

その他の回答3件)

id:pahoo No.1

回答回数5960ベストアンサー獲得回数633ここでベストアンサー

ポイント50pt

思いついたことを列挙します。

  1. DBファイル本体はWebサーバの管理外(httpd.confで指定されていない)のディレクトリに配置する。
  2. DBにアクセスできるPHPスクリプトは、ログインパスワードを設けるなどして、第三者に利用できないようにする。また、SQLインジェクション対策を施す。
  3. DBログインID、パスワードを記述したPHPスクリプトは1本のincludeファイルにする(ID、パスワードを記したファイルを幾つも作らない)。このファイルは、.htpasswd などによりログイン認証が必要であるようなセキュアなディレクトリに配置する。
  4. 格納するメールアドレスを暗号化する。たとえば公開鍵暗号方式の公開鍵で暗号化しておき、秘密鍵は質問者のローカルPCに置いておきます。手動でメール送信指示を行い、その都度、秘密鍵をサーバへ送ります。

いずれにしても、「絶対に漏れない」という対策はありません。そこで、下記の対策も必要です。

  1. DBへのアクセスログを保管する。
  2. Webサーバのアクセスログを保管する。
  3. 携帯サイトにプライバシーポリシーを明記し、免責条項を明記しておく。

また、メールを自動配信するというのはサイト運営を省力化できて便利なのですが、乗っ取られた際のリスクを考えると、送信指示だけは手動で行った方が安全だと思います。

id:fashion0208

>pahoo様

お世話になってますm(_ _)m

非常に参考になりました。早速4番を試してみます!

(追記)

http://f.hatena.ne.jp/images/fotolife/f/fashion0208/20080508/200...

上のような感じにしたらどうでしょう。

サーバ2を断定することは可能でしょうか。

2008/05/08 15:59:00
id:pahoo No.2

回答回数5960ベストアンサー獲得回数633

ポイント50pt

サーバ2を断定することは可能でしょうか。

不可能であることを証明することは困難ですが、少しでもリスクを軽減するために、Emailアドレス取得用PHPとの通信はSSLで行うことをお勧めします。

id:fashion0208

有り難う御座います。

SSLについても検討します。

ところでSQL-DBでSSLって使えるんですかね。

2008/05/09 00:56:51
id:ken33jp No.3

回答回数928ベストアンサー獲得回数13

ポイント5pt

DBに保存するときに暗号化して格納しておく。

id:fashion0208

有り難う御座います。

2008/05/08 22:56:50
id:fukakun No.4

回答回数54ベストアンサー獲得回数2

ポイント40pt

なかなか難しい質問ですが…

メール流出対策というよりも、脆弱性やつまらないバグを回避するための工夫ですよね。

いろいろありそうですが…下記などは参考にできるネタがまとまっていそうです。

プログラムの脆弱性について

データベースの脆弱性について

id:fashion0208

有り難う御座います。

今からじっくり読んでみます!

2008/05/09 00:55:04
  • id:fashion0208
    fashion0208 2008/05/08 12:05:09
    追記です。
    現在、正規表現を用いて、メールアドレス( Account @ Mobile_Domain )かどうかの判定を行っています。

    セキュリティ対策の質問が過去にも挙がってましたので、
    流出対策に繋がらないかもしれませんが、URLを載せておきます。

    【WEBサイト】PHP と Web アプリケーションのセキュリティについてのメモ
    http://www.asahi-net.or.jp/~wv7y-kmr/memo/php_security.html
    【書籍】PHPサイバーテロの技法―攻撃と防御の実際
    http://d.hatena.ne.jp/asin/4883374718

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません