如何保护PHP消息传递系统免受垃圾邮件的侵害?


How could I secure a PHP messaging system from spam?

我目前正在创建一个PHP消息传递系统,似乎无法想到一个合适的方法来阻止垃圾邮件攻击。将从这个表单发送一条消息(简化为包含要点):

<form action="messages/send" method="POST">
  <input type="text" name="message" />
  <input type="hidden" name="recipient" value="10" />
  <input type="submit" value="Send" />
</form>

上面的隐藏字段存储收件人ID。这些数据在这个网站上是不安全的,人们可以看到(如facebook;profile.php ? id = 45345345。)

表单提交后端PHP做以下检查:

  1. 发件人是否已登录?
  2. 允许发送方联系接收方吗?
  3. 消息是否包含任何内容?(非空)

我想到的问题是有人可以很容易地创建一个简单的脚本,可以自动增加表单中的"收件人"值,并基本上发送一个站点范围的消息。可以执行哪些其他后端PHP检查或其他类型的检查来防止这种情况发生?

您可以添加一些东西:

  • CSRF
  • 服务器端和客户端验证
  • captcha - [http://www.smashingmagazine.com/2011/03/04/in-search-of-the-perfect-captcha/]
  • 机器人脚本。在今年的黑帽大会上进行了演示,并为您提供了一些DOS保护。
  • 添加一个蜜罐隐藏字段,永远不应该完成。你可以使用Javascript在合法的表单上自动填写这个
  • 速度度量,例如表单提交的速度。

看看- https://security.stackexchange.com/questions/4235/how-should-i-secure-a-contact-form-that-appears-on-every-page-of-a-website