我正在尝试防止机器人向我的PHP注册文件提交虚假数据。我正在创建一个使用注册/登录系统的网站,我想添加电子邮件验证,这是我能力范围内的。然而问题在于我的Web主机每分钟只允许发送x封电子邮件,如果机器人垃圾邮件攻击,我的数据库不仅会充满垃圾账户,我还会因为超过电子邮件限制而被暂停。
我一直在阅读有关保护表单的信息,其中提到了CSRF,这是一个我不熟悉的术语。
这是我对CSRF预防中“令牌方法”的理解:
- 当包含表单的页面加载时,创建一个令牌。将令牌存储在SESSION或cookie中。 - 运行处理注册的PHP文件时,它将检查令牌。如果表单中提交的令牌不匹配(或者SESSION中没有设置令牌),则该请求就是垃圾请求。
我不明白为什么机器人不能简单地从HTML表单中获取令牌并进行提交。我知道令牌每次都会更改,但它不能每次都获取吗?
我假设机器人会使用CurL或类似工具来提交数据,以绕过实际提交HTML表单的要求,并直接将数据发送到PHP文件。
我的问题本质上是,为什么和如何使用这种方法可以防止机器人提交我的注册表单(或任何其他表单)。
我一直在阅读有关保护表单的信息,其中提到了CSRF,这是一个我不熟悉的术语。
这是我对CSRF预防中“令牌方法”的理解:
- 当包含表单的页面加载时,创建一个令牌。将令牌存储在SESSION或cookie中。 - 运行处理注册的PHP文件时,它将检查令牌。如果表单中提交的令牌不匹配(或者SESSION中没有设置令牌),则该请求就是垃圾请求。
我不明白为什么机器人不能简单地从HTML表单中获取令牌并进行提交。我知道令牌每次都会更改,但它不能每次都获取吗?
我假设机器人会使用CurL或类似工具来提交数据,以绕过实际提交HTML表单的要求,并直接将数据发送到PHP文件。
我的问题本质上是,为什么和如何使用这种方法可以防止机器人提交我的注册表单(或任何其他表单)。