0

FaceBook のコメント ボックスで誰かがコメントするたびに電子メールを送信するスクリプトがあります。Fb.event.subscribe は、私のサーバー上の mail.php への ajax 呼び出しをトリガーし、新しいコメントを通知するために私のメール アドレスにメールを送信します。これをより安全にし、mail.php への直接アクセスをブロックするにはどうすればよいですか?

        FB.Event.subscribe('comment.create', function (response) {
            var domain = "<?= $_SERVER['SERVER_NAME']; ?>";
            var url = "<?= $currentUrl ?>";
                alert("comment added");

                            var xmlhttp;
                            if (window.XMLHttpRequest)
                              {// code for IE7+, Firefox, Chrome, Opera, Safari
                              xmlhttp=new XMLHttpRequest();
                              }
                            else
                              {// code for IE6, IE5
                              xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
                              }

                            xmlhttp.open("GET","http://" + domain + "/mail.php?url=" + url,true);
                            xmlhttp.send();

        });


** ---------- here is mail.php -------- **



<?php 
    $to = "MY EMAIL HERE";
    $subject = "New Comment Added";
    $message = "New Comment posted here: " . $_GET['url'] ;
    $from = "MY EMAIL HERE";
    $headers = "From:" . $from;
    //mail($to,$subject,$message,$headers);
    //echo  $_GET['accesstoken'] ;
?>
4

2 に答える 2

4

これはできません。クライアントがmail.phpクライアント側のコードでアクセスできるようにすると、誰でもスクリプトを使用してアクセスできます。好きなだけ難読化を試みることができますが、誰かが本当にアクセス方法を知りたい場合は、そうするでしょう。

EDIT : 基本的なルールは、人間がブラウザーで実行できる場合は、コンピューターがスクリプトで実行できるということです。このルールに反する唯一の方法は CAPTCHA ですが、最近ではこれらも回避できます。

于 2012-05-30T11:38:05.873 に答える
0

次のように、php スクリプトにヘッダー チェックを追加できます。

<?php
  if (!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
    //send email
  }
?>
于 2012-05-30T11:47:05.487 に答える