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

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

新規登録して質問してみよう
ただいま回答率
85.50%
セキュリティー

このタグは、コンピューターシステムの安全性やデータの機密性に関連したトピックの為に使われます。

SSL

SSL(Secure Sockets Layer)とは、暗号化されたプロトコルで、インターネット上での通信セキュリティを提供しています。

PHP

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

Q&A

5回答

8891閲覧

phpでのメール送信のセキュリティ

miki0901

総合スコア14

セキュリティー

このタグは、コンピューターシステムの安全性やデータの機密性に関連したトピックの為に使われます。

SSL

SSL(Secure Sockets Layer)とは、暗号化されたプロトコルで、インターネット上での通信セキュリティを提供しています。

PHP

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

0グッド

1クリップ

投稿2018/10/16 05:26

皆様こんにちは。

メールの処理でよく、

①フォームへ個人情報を入力
②確認画面⇒入力内容をmb_send_mailにて送信
③管理者がメーラーでお問い合わせ内容を確認

という処理を見ますが、
少し前までは「SSLが導入されていない場合、改ざんしほうだい」という認識でした。

しかしよく考えてみると、SSL導入されたサイトでも、サーバー側にPOSTされるまでは安心ですが、その後phpでmb_send_mailでユーザーにメールが届くまでの内容は、容易に傍受されてしまうのではないでしょうか?
上記が正しい場合、phpの機能で、平文以外で送信する方法がありましたらご教授くださいm(__)m

初歩的な質問ですみませんm(__)m
よろしくお願いいたします。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答5

0

質問の内容は一般的な、よくある話だとは思いますが、

少し前までは「SSLが導入されていない場合、改ざんしほうだい」という認識でした。

これも常識的な話ですが、「改ざんしほうだい」というのもややバランスを欠いた認識であるように思います。「なら、あなたは、できるのですか」と質問したい気分です。

mb_send_mailでユーザーにメールが届くまでの内容は、容易に傍受されてしまうのではないでしょうか?

これも、何をもって「容易に傍受」と言うか次第です。
通常のメールは意外に機密情報が飛び交っています。平文メールで個人の連絡先を送付することは普通にあります。
また、GoogleやFacebook、Amazon等のメジャーサービスのパスワードリセットはメールで行います。メールが「容易に傍受」できるのであれば、それはとんでもない話です。にも関わらず「メールでパスワードリセットしても良い」と認識されているのは、「メールには盗聴のリスクはあるが、そんなに簡単に盗聴できるわけでもない」という認識だからだと思います。

メールが平文通信だから盗聴できるというのはよく聞く話ですが、最近は「メールは平文通信」というのも常識ではなくなりつつあります。端末からメールサーバーへの通信はTLSで行うことが一般的になりつつありますし、メールサーバー(MTA)間もTLS化しようという動きがあり、こちらはGoogleが音頭を取ってやっています。メールの相手が想定できるのであれば、通信路上の盗聴をかなり防ぐことができるようになっています。とはいえ、不特定とのメールであれば、そこまでの想定はおきにくいかもしれませんね。
一方、メールの送信がバケツリレー方式であるために、メールが中継される経路のメールサーバー(MTA)管理者が悪意を持てば、メールの盗聴は比較的容易です。したがって、メールサーバー管理者の悪意をどこまで想定するという問題があります。

一方、前述のように、平文メールでけっこうな機密情報が飛び交っているという現状もあります。これは、先に述べたように、「メールは盗聴のリスクはあるが、現実には盗聴されるケースは少ない」ということで、運用上リスクを許容していることになります。

このような背景を踏まえ、問い合わせの内容等から、リスクを分析して、暗号化の必要があるかどうかを決めることになります。問い合わせがメールでも行っているようなものであれば、ウェブフォームからのメールを暗号化するまでもないという判断もありえます。
私はセキュリティの会社を経営しているので、お客様が望めば問い合わせを暗号化できるようにPGP公開鍵を問い合わせフォームからダウンロードできるようにしています。しかし、そのPGP鍵を使って暗号化メールで問い合わせが来たケースは1件もありません。PGP暗号化はめんどうくさいですからね。
これは、お客様から弊社へのメールなので、PGPの公開鍵を公開して、復号鍵は弊社内に保存しているわけで運用はまだ容易ですが、一方、お客様に送付するメールの場合は、PGP鍵をお客さまに用意して頂く必要があります。業務のやりとりをPGP暗号メールで行うケースは、皆無ではありませんが、極めて稀なケースです。

いろいろ書きましたが、

  • メールの暗号化にはS/MIMEやPGPなどがあるが、基本的に鍵はメールの受取側に用意していただくべきものである
  • 原則を曲げて暗号鍵を送付元が用意したとしても、その鍵を安全に届ける手段が難しい

という問題があります。
なので、現実的な妥協点としては、以下が考えられます。

  • メールでは「問い合わせを受け付けました」という旨のみを連絡し、問い合わせ内容(秘密情報)はメールには書かない
  • 問い合わせフォームに「問い合わせ内容はメールにて折返し連絡するので、メール送信ができない内容があれば別の手段で問い合わせてください」などを注意書きをする

あるいは、ユーザー登録をしてもらって、内容はTLS暗号化したウェブサービスでやりとりする案も考えられますが、こうなるとウェブフォームの範疇を超えてしまいますね。

投稿2018/10/16 09:20

ockeghem

総合スコア11701

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

その後phpでmb_send_mailでユーザーにメールが届くまでの内容は、容易に傍受されてしまうのではないでしょうか?

電子メールとは、そういうものです。俗に「バケツリレー」と呼ばれるように、どこにあるのかも知らないサーバを経由して送信されうるものですので、正しく届くか、改ざんされないかなど、何も保証されません

phpの機能で、平文以外で送信する方法がありましたらご教授くださいm(__)m

S/MIMEなど、メール上で暗号化を実現する規格もありますが、相手が鍵を用意しなければならない以上、一般的な用途には向きません。

投稿2018/10/16 05:35

maisumakun

総合スコア145121

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

そういうことを求めるなら、メール以外の方法を考えましょう。

あるいは、ウェブサーバーにメールサーバーを同居させ、そのサーバー内にメールを留め置き、ユーザーからそのサーバーにPOP over SSLで読みに来てもらう。

投稿2018/10/16 06:24

otn

総合スコア84423

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

銀行などからメールを受け取ると、変なファイルが添付されてませんか?
あれは電子署名と言って、中身が改ざんされていないことや送付元が銀行であること等を確認するためのものです。
独自ドメインを持っていて、シマンテック等の認証局から電子署名を発行してもらえば(有料)、電子署名を付けてメールを送信するのは難しいことではありません。
やり方についてはいくらでも情報が転がっているはずですので、探してみて下さい。

投稿2018/10/16 05:41

kunai

総合スコア5405

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

送信、宛先MTAがDkimに対応していれば改ざんは検知出来ます。またstarttlsに対応していれば通信も暗号化されます。

送信経路のMTAに左右されるものです。

投稿2018/10/16 11:57

scsi

総合スコア2840

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問