使用CSRF表单令牌是否有助于防止垃圾邮件?

Har*_*rry 4 forms security spam-prevention csrf

我试图阻止机器人(可能)将虚假数据提交到我的php注册文件.我正在创建一个使用注册/登录系统的网站,我想添加我能够的电子邮件验证.然而问题是我的webhost只允许x每分钟发送大量电子邮件,如果机器人发送垃圾邮件,这不仅会使我的数据库充满垃圾邮件帐户,而且我也会因违反电子邮件限制而被暂停.

我一直在阅读有关确保表格和CSRF的内容,这是我不熟悉的术语.

这是我目前对CSRF预防的"令牌方法"的理解;

  • 加载包含表单的页面时,创建一个令牌.将令牌存储在SESSIONcookie或cookie中.

  • 当运行处理注册的PHP文件时,它将检查令牌.如果表单中提交的内容不匹配(或者未设置令牌SESSION),则请求是垃圾邮件.

我不明白为什么机器人不能简单地从HTML表单中获取令牌并提交它.我知道它每次都在变化,难道不是每次都抓住它吗?

我假设机器人只是使用CurL或类似的东西提交数据,以绕过实际提交HTML表单的需要,而是直接将数据发送到PHP文件.

我的问题基本上是,为什么以及如何防止机器人提交我的注册表格(或任何表格).

bob*_*nce 10

使用CSRF表单令牌是否有助于防止垃圾邮件?

有点,是的.不是设计,而是因为它使编写机器人的工作量略高,而机器人编写者则很懒惰.

我不明白为什么机器人不能简单地从HTML表单中获取令牌并提交它

当然,专门针对您的注册表单编写的机器人将会这样做.而作为无头网络浏览器实现的机器人将自动执行它,因为这是真正的浏览器所能做的.

你将通过拥有一个CSRF令牌停止的僵尸程序是愚蠢的机器人,那些只是将垃圾扔进他们的刮刀找到,提交和逃跑的每个表单操作URL,甚至没有看到响应是什么.评论垃圾邮件发送者往往是愚蠢的.


Nar*_*arf 5

我的问题本质上是,这种方法为什么以及如何防止机器人提交我的注册表(或任何与此相关的表格)。

它没有。

CSRF 代表“跨站点请求伪造”,此类令牌有助于防止这种情况发生 - 用户被诱骗从另一个站点向您的站点提交表单,这与垃圾邮件无关。

为了防止垃圾邮件,您应该使用某种验证码挑战。

  • 显然,因为如果提交的数据没有正确的 CAPTCHA 验证值,您将不会接受它。 (2认同)