- ベストアンサー
PHP自動返信のセキュリティについて
- PHP初心者がお問い合わせフォームでの自動返信についてセキュリティに気を付けるべき点について質問です。
- お問い合わせフォームでは、問い合わせ先のアドレスを固定で設定し、問い合わせ本人のアドレスを変数で渡すことになります。
- そのため、セキュリティ的に危険な点を避けるために送信前にチェックを掛けることが必要かどうかよく分からないので、アドバイスを求めています。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
送信完了しました、と表示されている画面で再読み込みをすると、再度メール送信されてしまいます。 POSTなので、「再表示するには再度データを送信する必要があります、送信しますか?」と問い合わせは出るかも知れませんが、『はい』を押すとやっぱりメールが送信されてしまいます。 HP管理者に嫌がらせをする気なら、POST送信できるようにJavaScriptを組めば、自動で何通も発信できます。 同じように、誰か嫌がらせをしたい相手のメールアドレスを入力した上で、送信処理を行う、そんなJavaScriptを組めば任意の特定の相手に嫌がらせは簡単です。 実際にはJavaScriptが楽なのでJavaScriptと書きましたが、通信プログラムさえ作れるなら、それ以外の言語でも大概はOKです。 送信者のIPアドレス等の情報を取得して、メール本文に埋め込むことや、DBに履歴として保存するようにしましょう。 嫌がらせ防止の役には立ちませんが、犯人追及の際の情報として必要になります。 メールアドレスも保存しておき、同一のメールアドレスから連続して何通も送信できないようにするなど。 (書き忘れを追記で送信する可能性もあるため、一日10回以上はダメなどの制限を設ける等が良いか?) 同様に、同一IPアドレスからの送信制限を設けることもありか。 REFERERをチェックして、自分の管理サイト意外から送信されないようにチェックする等ができれば良い、但し、セキュリティソフトなどでREFERERを送信しないよう設定できるので、正当なアクセスの場合でもREFERERが空白の場合がある。 つまり、不正発見のためだけに利用できて、正当確認には使えない。 機械的な送信ができない(しにくい)ように、キー認証機能(ランダムな文字を表示して、ユーザーがその文字を入力して初めて送信できるようにする機能)があればなお良い。 キー認証には機械で読み取りにくい、崩した文字を画像で表示できればベスト。 必須なのは再読み込み対策と、送信者情報の保存。 推奨したいのは、簡易的でよいのでキー認証機能。 あとは余力があれば、思いつく限り徹底的にというところでしょうか。
その他の回答 (1)
- yambejp
- ベストアンサー率51% (3827/7415)
#1さんの方式で良いと思いますが、そのた気のついたこと ・最低限のメールアドレスのドメインチェック、文法チェックはする ・登録フォームでの自動メールならやはりhttpsを使った方がよいでしょう。 ・セッションをつかった確認画面をワンクッションいれる方がいいでしょう。 ・それとは別に空メール方式にする。 ・ループを防ぐために空メールの受けアドレスと送りアドレスは別のモノを用意する。 ・不測の事態も発生することを想定して、手動で特定アドレスを ロックする機能をつけておく など
お礼
早速のご回答ありがとうございます。 > ・最低限のメールアドレスのドメインチェック、文法チェックはする ↓ そうですね。正規表現などの設定が難しく避けていました。 PEARなど利用してみます。 > ・セッションをつかった確認画面をワンクッションいれる方がいいでしょう。 > ・それとは別に空メール方式にする。 > ・ループを防ぐために空メールの受けアドレスと送りアドレスは別のモノを用意する。 > ・不測の事態も発生することを想定して、手動で特定アドレスを > ロックする機能をつけておく ↓ https以外は、ほとんどすぐに理解できないので、 勉強して設定してみようと思います。 Webデザイナーをしておりメールフォームくらいは 自分で作れるようにと思ったのですが、 やはり簡単にはできないものですね。 勉強になりました。ありがとうございました。
お礼
早速のご回答ありがとうございます。 また、ご丁寧な文面でのご助言で助かります。 > 再読み込みをすると、再度メール送信されてしまいます。 > 送信者のIPアドレス等の情報を取得して、メール本文に埋め込むことや、DBに履歴として保存するようにしましょう。 ↓ 自動送信以前の話のようですね。 すぐに設定方法が分からないのですが、調べて設定してみます。 > メールアドレスも保存しておき、同一のメールアドレスから連続して何通も送信できないようにするなど。 > 同様に、同一IPアドレスからの送信制限を設けることもありか。 ↓ こちらはサーバー側での設定が必要に思うのですが、 共有レンタルサーバーで可能なのでしょうか? > REFERERをチェック > キー認証機能 ↓ こちらも勉強して設定してみます。 一応、現状ではお問合せ先への嫌がらせなどの被害の可能性があるが、 踏み台として利用される危険性はないとの理解でよろしいでしょうか? 宜しくお願いします。