0

我真的不认为有一个万无一失的方法,但我当然是来​​这里寻求建议的......

我有一个项目,我想根据 IP 地址限制每个用户每天使用 3 次。当然,对于传统用例,我可以使用 mysql 表轻松地做到这一点......但是我如何解释那些足够聪明的人使用foxyproxy(firefox 的代理切换器插件)和/或打开一个新的浏览器来获得一个新的会话。每次使用都会显示为一个新的、唯一的用户。

我是坚持使用非万无一失的方法还是我可以尝试其他任何方法?我很确定我们的大多数用户群都不知道如何使用这些方法,甚至不知道这些方法是什么,但无论如何我想解释一下。

编辑:如果也有非 php 解决方案,我愿意接受任何想法。

4

3 回答 3

3

从字面上看,您无能为力以某种fool-proof方式防止这种情况发生。无论你想出什么,对于任何对网络如何工作有模糊线索的人来说,解决它都是微不足道的。

您应该实施适当的身份验证系统并根据用户 ID 而不是访问服务的主机进行限制。

于 2013-04-04T14:52:21.727 回答
0

某些代理服务器可能(或可能不)在 HTTP 标头中设置真实 IP 地址,例如 HTTP_CLIENT_IP 或 HTTP_X_FORWARDED_FOR 您还可以尝试根据其他变量来区分用户,$_SERVER例如

[HTTP_USER_AGENT] => Mozilla/5.0 (Windows NT 5.1; rv:19.0) Gecko/20100101 Firefox/19.0
[HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
[HTTP_ACCEPT_LANGUAGE] => en-US,en;q=0.5
[HTTP_ACCEPT_ENCODING] => gzip, deflate
[HTTP_X_DNT_OVERSION] => 2.2.1.611
[HTTP_X_DNT_COHORT] => 2012-8-2
[HTTP_X_DNT_VERSION] => 2.2.8.307 FF ffamo 10008

它并不完美,它们都可以伪造,并且你会得到很多误报,因为很多人都有这个设置,但如果你真的那么绝望,它可能会有所帮助。

于 2013-04-04T15:08:57.757 回答
-2

你可以用 cookie 和 ip 阻止列表来限制它(当然你也可以使用 flash cookie、javascript 的 localstorage 等等)。在这两种情况下,您都可以节省服务的使用量和他使用它的时间。如果用户只是尝试删除他的 cookie 而没有获得新 ip(无论是代理还是他只是改变他的IP)。

这适用于最普通的用户。但是没有办法绝对确定没有人可以绕过你的限制。

于 2013-04-04T14:53:39.427 回答