【问题标题】:Is it possible to limit submit form of visitors through ->ip() in Laravel是否可以通过 Laravel 中的 ->ip() 限制访问者的提交形式
【发布时间】:2021-07-21 09:03:57
【问题描述】:

通过获取客户端 IP 并将其保存在数据库中,然后使用它来检测垃圾邮件访问者,阻止或限制访问者(仅查看网站,无需用户注册)在 Laravel 中提交多个表单。这可能吗?

【问题讨论】:

标签: laravel spam-prevention


【解决方案1】:

我不建议使用访问者 IP 来防止将来通过表单向您的网站发出请求。对于普通用户来说,IP 很少是静态的。如果用户知道他们在做什么,他们只需要重新启动他们的互联网连接,他们的 ISP 就会给他们一个不同的 IP 地址。此外,他们可以使用 IP 轮换代理他们的请求来绕过您的“安全”。

如果您试图阻止机器人提交表单。一个好的方法是实现一个没有值的隐藏输入字段。如果提交了表单并且已经填充了输入字段,那么您就知道它是一个机器人。这不是最可靠的方法,因为机器人 必须 是一个愚蠢的机器人。

我能想到的唯一真正“可靠”的方法是客户端 > 服务器端验证,例如 Google ReCaptcha。

当然,另一种方法是接受您的表单将被垃圾邮件发送并在提交后找到处理垃圾邮件的方法。

【讨论】:

  • 即使我对如何检测机器人不太了解,但是有一个包可以检测使用用户代理的机器人,我猜用户代理比检查 ips 做得更好,这就是包github.com/JayBizzle/Crawler-Detect
  • 我会说这是相同的风险水平。当您从 bot 发出请求时,您可以设置 bot 发送到服务器的 User-Agent 值,这样您就可以轻松欺骗浏览器或创建假浏览器。
  • 但我认为如果您知道哪个 Ip 导致了流量,您可以通过在 Fixtures/Crawlers.php 中的 $data 数组中添加正则表达式模式来阻止或限制它这个包
猜你喜欢
  • 1970-01-01
  • 2019-05-07
  • 1970-01-01
  • 2018-06-08
  • 2012-04-12
  • 2017-05-08
  • 2018-02-18
  • 1970-01-01
相关资源
最近更新 更多