0

我有一个网上商店,每隔几天就会发送一封空邮件,就像订单一样。这很可能是谷歌吗?

我有一个名为 send2.php 的文件,它从会话中获取所有信息,所有发布数据,并通过邮件发送。之后,它会重定向到“谢谢”页面。

谷歌可以并且会发送空表单只是为了查看 send2.php 中的内容吗?防止这种情况发生的最好方法是什么?

4

3 回答 3

1

正如其他人所提到的,有多种方法可以使用empty()检查和robots.txt. 但是,这些依赖于尊重您网站的机器人。许多机器人会尝试将值注入表单(意味着empty检查不起作用)并且这些机器人并不关心(如果:实际上鼓励一些机器人在假设您可能的情况下定位您的网站,robots.txt我不会感到惊讶 有一些敏感的东西......但这只是猜测)。robot.txtDisallow

你最好的最好的就是“人工检查”。在允许提交之前实施验证码/验证码解决方案,或其他一些计算机难以解决或解析/理解的逻辑测试:“这是什么动物?[普通动物的照片]”,“解决这个简单的方程 [(12/ 4)+1]"等

这些检查必须是 server-side。它们通常涉及$_SESSION在首次加载表单时为挑战任务设置一个带有“答案”的变量,然后在提交表单后检查他们输入的值与此会话变量是否相符。永远不要依赖 Javascript 为您进行验证(正如您在对 x711Li 的评论中提到的那样)。Javascript 验证纯粹是为了方便用户(因此他们可以在提交之前看到问题)或减少服务器上的负载(因此您不必运行/记录大量失败的提交)。任何人或机器人都可以绕过或操纵 Javascript 验证,因此请确保您最终使用的任何方法都涉及服务器端检查。

于 2012-10-22T22:17:05.357 回答
1

添加一个名为robots.txt您的根目录的文件并将其放入其中:

User-Agent: *
Disallow: /path/to/send2.php

请记住,这不是一个完美的解决方案。这将阻止(合作的)网络爬虫访问您的页面。

参考http ://en.wikipedia.org/wiki/Robots_exclusion_standard

更好的解决方案涉及用户身份验证(确保提示您的脚本的代理不是机器人)。

于 2012-10-22T21:56:31.447 回答
0

如果您收到的邮件是空白值,因为在整个会话期间尚未设置这些值,那么为什么不在发送邮件之前检查这些值,罪魁祸首很可能是爬虫,其中许多(包括 bingbot ) 不会监听 robots.txt 文件,而且 robots.txt 文件是黑客寻找信息收集的第一个地方。

<?php 
if(!empty($_SESSION['some_info'])){
    mail(...);
}
?>
于 2012-10-22T22:07:02.477 回答