【问题标题】:Restrict Number of downloads by User IP Adrress in PHP在 PHP 中通过用户 IP 地址限制下载次数
【发布时间】:2017-02-25 10:13:54
【问题描述】:

我正在构建一个 PHP 网页,其中包含一个用于下载图像的按钮。我想限制未签名用户仅下载此图像 3 次。

我既不想使用 Session 也不想使用 Cookie,因为用户可以删除他的 Cookie!

我想使用 IP,所以我使用了$_SERVER 全局变量,但这里的问题是 IP 地址是可变的。它是动态的,并且每时每刻都在变化。

那我该怎么办?

【问题讨论】:

  • 我不相信你可以,基于你设置的限制。但是,根据图片的数量,您可能希望对照片设置时间限制(即,禁止在 24 小时内下载超过 3 次)。它可能会完成您想要做的同样的事情。笔记;这只有在有大量图片可供用户选择时才有效。

标签: php wordpress cookies web ip


【解决方案1】:

并非所有 IP 都是动态的,这取决于 ISP。您的问题是唯一地识别用户,这在不要求用户登录的情况下是不可能做到的。无论您使用什么,IP、cookie、会话、客户端脚本来进行浏览器指纹识别或将令牌存储在 localStorage 中,熟练的使用将总是设法克服你的保护。

你只能让用户感到困难:

  • 运行客户端脚本来创建浏览器指纹 - https://github.com/Valve/fingerprintjs2 - 并将其发送到服务器以帮助您识别用户
  • 生成服务器端令牌并发送给客户端并存储在localStorage中并发送回服务器
  • 在数据库中存储用户的IP
  • 使用会话/cookie 增加额外的安全层
  • 使用隐藏的 iframe 从您拥有的其他域加载代码并从那里添加额外的 cookie(有时用户不会删除所有 cookie,只会删除您网站的那些)
  • 在用户下载图片之前输入验证码,以免您被机器人抓取

结合使用以上所有内容会使用户在不创建用户帐户的情况下从您的网站下载图片很烦人,但并非不可能。

【讨论】:

  • 但这对我没有用,用户可以删除缓存或从其他浏览器下载!
  • 正如我所说,不要求用户登录是无法做到的。
  • 真的很奇怪!其他网站如何做到这一点?我不知道!
  • 无论如何我都同时使用了 IP 和 Cookie,但这并不是 100% 准确
猜你喜欢
  • 2011-12-11
  • 2011-07-05
  • 2017-04-06
  • 1970-01-01
  • 1970-01-01
  • 2013-06-12
  • 2014-03-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多