私はウェブショップを運営していて、数日おきに注文のように空のメールが送信されます。これはおそらくグーグルですか?
send2.phpというファイルがあります。このファイルは、セッションからすべての情報、すべての投稿データを取得し、メールで送信します。その後、「ありがとう」ページにリダイレクトされます。
send2.phpの内容を確認するためだけに、グーグルは空のフォームを送信できますか?これを防ぐための最良の方法は何でしょうか?
私はウェブショップを運営していて、数日おきに注文のように空のメールが送信されます。これはおそらくグーグルですか?
send2.phpというファイルがあります。このファイルは、セッションからすべての情報、すべての投稿データを取得し、メールで送信します。その後、「ありがとう」ページにリダイレクトされます。
send2.phpの内容を確認するためだけに、グーグルは空のフォームを送信できますか?これを防ぐための最良の方法は何でしょうか?
empty()
他の人が述べているように、チェックとを使用して良性のボットを回避するさまざまな方法がありrobots.txt
ます。ただし、これらはサイトを尊重するボットに依存しています。多くのボットはフォームに値を挿入しようとしますが(empty
チェックが機能しないことを意味します)、これらのボットは気にしません(実際にいくつかのボットがあなたのサイトをターゲットにすることを奨励しrobots.txt
ている場合でも驚かないでしょう )何か敏感なものがあります...しかしそれは単なる推測です)。robot.txt
Disallow
あなたの最善の策は「人間のチェック」になることです。キャプチャ/reCAPTCHAソリューションを実装するか、提出を許可する前にコンピューターが解決または解析/理解するのが難しいその他の論理テストを実装します。「この動物は何ですか?[一般的な動物の写真]」、「この単純な方程式を解きます[(12 / 4)+1]"など。
これらのチェックはサーバー側で行う必要があります。通常、フォームが最初に読み込まれるときにチャレンジタスクへの「回答」を含む$_SESSION
変数を設定し、フォームを送信したら、このセッション変数に対して入力した値を確認します。検証をJavascriptに依存しないでください(x711Liへのコメントで行っていると述べたように)。Javascriptの検証は、ユーザーの便宜のために(ユーザーが送信する前に問題を確認できるように)、またはサーバーの負荷を軽減するために(したがって、失敗した送信を大量に実行/ログに記録する必要がないように)純粋に行われます。すべての人またはボットがJavascript検証をバイパスまたは操作できるため、最終的に使用する方法にサーバー側のチェックが含まれることを確認してください。
robots.txt
ルートディレクトリに呼び出されるファイルを追加し、その中に配置します。
User-Agent: *
Disallow: /path/to/send2.php
これは完璧な解決策ではないことに注意してください。これにより、(協調する)Webクローラーがページにアクセスできなくなります。
参照: http: //en.wikipedia.org/wiki/Robots_exclusion_standard
より良い解決策には、ユーザー認証が含まれます(スクリプトを要求するエージェントがボットではないことを確認します)。
セッション全体で値が設定されていないため、受信するメールの値が空白の場合は、メールを送信する前にこれらの値を確認しないでください。原因はクローラーである可能性が高く、その多く(bingbotを含む) )はrobots.txtファイルをリッスンしません。さらに、robotsファイルは、ハッカーが情報収集のために最初に探す場所です。
<?php
if(!empty($_SESSION['some_info'])){
mail(...);
}
?>