2012-07-17 51 views
5

我構建了一個PHP腳本來發送電子郵件(基於Amazon SES)。如何確保觸發電子郵件的PHP腳本的使用?

所以我可以做一個GET或POST Ajax調用我的PHP腳本:

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

觸發被髮送到[email protected]的電子郵件。

我的網站有一個註冊表單,它在提交時對PHP腳本進行jquery ajax調用(網站和PHP腳本在同一臺服務器上)。我也使用腳本來處理其他事件。

現在我擔心,如果有人拿到了它的URL,這個腳本顯然會被濫用。

如何保護對此腳本的訪問?

+4

如果您允許用戶指定電子郵件的「收件人:」,則會濫用電子郵件腳本**將被濫用發送垃圾郵件。沒有辦法來保證這一點,除了有一個允許的地址白名單,或硬編碼的地址,並只發送到。 – 2012-07-17 14:59:22

+0

http://php.net/manual/en/features.http-auth.php – ManseUK 2012-07-17 14:59:30

回答

3

第一步:當用戶打開該登記表,從他可以發送郵件並通過驗證碼,設置一個$_SESSION參數。

$_SESSION["mail_allowed"] = true; 

第二步:請求被照常發送到

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

第三步:最後,在郵件腳本,做一些類似如下:

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

這方式,用戶可以在打開頁面後發送郵件,但不能直接執行郵件程序腳本。

+0

有趣。謝謝。 – tucson 2012-07-18 07:29:52

4

您可以使用captcha來保護對該腳本的訪問並使濫用更加困難。

1

是的,這很容易被濫用。有沒有堅實的解決方案,但一對夫婦的方式來保護它浮現在腦海中:(?驗證碼)

  • 只允許鏈接的,你就一定不是機器人身份驗證的用戶工作
  • 防止同一IP來自發出重複請求的地址。