2012-07-17 12 views
5

電子メールを送信するPHPスクリプトを作成します(Amazon SESに基づいています)。電子メールをトリガーするPHPスクリプトの使用を保護する方法は?

だから、私はPHPスクリプトへのGETやPOSTのAjaxコールすることができます:

envoi.php?nom=John&[email protected] 

[email protected]に送信される電子メールをトリガします。

私のウェブサイトには、送信時にjquery ajaxのPHPスクリプト(ウェブサイトとPHPスクリプトが同じサーバーにあります)を呼び出す登録フォームがあります。他のイベントにもこのスクリプトを使用します。

誰かがURLを取得すると、このスクリプトが悪用される可能性があります。

このスクリプトへのアクセスを保護するにはどうすればよいですか?

+4

メールに「To:」を指定できるようにすると、メールスクリプト**が迷惑メールを送信することに悪用されます。許容されるアドレスのホワイトリストを持つか、またはアドレスをハードコーディングしてそのアドレスに送信する以外に、これを保護する方法はありません。 –

+0

http://php.net/manual/en/features.http-auth.php – ManseUK

答えて

3

ステップ1:ユーザーは、彼がメールを送信してキャプチャを渡し、$_SESSIONパラメータを設定することができ、そこから登録フォームを開きます。

$_SESSION["mail_allowed"] = true; 

ステップ2:要求が

envoi.php?nom=John&[email protected] 

ステップ3にいつものように送信されます。最後に、メールのスクリプトでは、以下のような何か:

if($_SESSION["mail_allowed"]){ 
    $_SESSION["mail_allowed"] = false; 
    //send mail 
} 
else{ 
    die('File cannot be executed directly'); 
} 

このユーザーはページを開くとメールを送信できますが、メールプログラムを直接実行することはできません。

+0

興味深い。ありがとうございました。 – tucson

4

captchaを使用して、このスクリプトへのアクセスを保護し、悪用を少し難しくすることができます。

1

はい、これは簡単に悪用される可能性があります。そこには固溶体ませんが、それを保護するためにカップルの方法が頭に浮かぶ:

  • リンクはあなたが確信している認証済みのユーザーのために働くことだけを許可する(キャプチャ?)ボットではありません
  • を防ぐには、同じIPは繰り返し要求を発行することからのアドレス。
関連する問題