0

サーバーでphpコードを使用して、クライアントにメッセージを送信します。私が使用しているプログラミングツール(Game Maker)を使用すると、シェルを実行してphp経由でメッセージを送信し、リンクがブラウザーに表示されるようにすることができます。

例はここにあります...

他のすべてのものが追加されました。つまり、実際には、送信しているメッセージと送信しているすべてのものがブラウザーに表示されます。私はphpgetメソッドを使用します。保護されていない可能性があることを除いて、すべてが完全に機能するようになりました。誰かがphppostメソッドを提案しましたが、サーバーのphp codに置き換えて投稿し、同じものをブラウザーに貼り付けたところ、コードが機能しませんでした。説明するのは難しいですが、これが私のサーバー上のphpコードです:

<?php
// Some checks on $_SERVER['HTTP_X_REFERRER'] and similar headers
// might be in order

// The input form has an hidden field called email. Most spambot will
// fall for the trap and try filling it. And if ever their lord and master checks the bot logs,
// why not make him think we're morons that misspelled 'smtp'?
if (!isset($_GET['email']))
    die("Missing recipient address");
if ('' != $_GET['email'])
{
    // A bot, are you?
    sleep(2);
    die('DNS error: cannot resolve smpt.gmail.com');
    // Yes, this IS security through obscurity, but it's only an added layer which   comes almost for free.
}

$newline = $_GET['message'];

$newline = str_replace("[N]","\n","$newline");
$newline = str_replace("[n]","\n","$newline");

// Add some last-ditch info
$newline .= <<<DIAGNOSTIC_INFO

---
Mail sent from $_SERVER[REMOTE_ADDR]:$_SERVER[REMOTE_PORT]


DIAGNOSTIC_INFO;

mail('info@site.com','missing Password Report',$newline,"From: ".$_GET['from']);

header( 'Location: http://site.com/report.html' ) ;
?>

次に、このphpコードを自分のサイトで呼び出します。そのため、最終的にはすべてがブラウザのアドレスバーに表示されます。これが理にかなっていることを願っています。少なくとも送信された情報がユーザーの履歴などに表示されないように、投稿を使用して物事をより安全にするにはどうすればよいですか。

4

1 に答える 1

1

フォームで POST に置き換える場合は、リクエストも POST に置き換える必要があります。

<?php
// Some checks on $_SERVER['HTTP_X_REFERRER'] and similar headers
// might be in order

// The input form has an hidden field called email. Most spambot will
// fall for the trap and try filling it. And if ever their lord and master checks the          bot logs,
   // why not make him think we're morons that misspelled 'smtp'?
   if (!isset($_POST['email']))
    die("Missing recipient address");
 if ('' != $_POST['email'])
 {  // A bot, are you?
       sleep(2);
     die('DNS error: cannot resolve smpt.gmail.com');
      // Yes, this IS security through obscurity, but it's only an added layer which   comes almost for free.
   }



 $newline = $_POST['message'];

$newline = str_replace("[N]","\n","$newline");
$newline = str_replace("[n]","\n","$newline");

// Add some last-ditch info
  $newline .= <<<DIAGNOSTIC_INFO

---
Mail sent from $_SERVER[REMOTE_ADDR]:$_SERVER[REMOTE_PORT]


DIAGNOSTIC_INFO;

mail('info@site.com','missing Password Report',$newline,"From: ".$_POST['from']);

header( 'Location: http://site.com/report.html' ) ;
?>

のような実際の G​​ET パラメータを使用して送信しない限り、http://www.mysite.com/send.php?email=etc; この場合、変数を取得するには GET に設定する必要があります。

于 2012-08-06T10:35:08.010 に答える