fab*_*474 2 java grails facebook
我试图在几乎任何网站上实现一些功能:一个'ilike'按钮(如Facebook),不要求用户认证用于我用Grails编写的网站上的任何文章.
我不想使用任何外部解决方案,所以我需要自己实现它(或使用grails插件).
所以我的问题是:如何实现这个'ilike'按钮并防止用户最多作弊?例如,我是否需要存储本地cookie(我想是的)?我是否需要检查HTTP请求的会话ID和IP?
什么是用于比如网上投票知名的实现?
非常感谢您的帮助.
没有用户身份验证并完全防止作弊?不能,抱歉.
您可以限制每个IP地址的投票数,但NAT和代理和VPN使这个不可行(IP地址可以映射到许多用户 - 例如学校或市政网络,用户可以映射到许多IP地址 - 例如移动连接或DHCP等).
你可以设置一个cookie,但这些可以很容易删除,甚至不能存储(Ctrl + Shift + Del,任何人?).
请注意,只需设置一个Cookie,您就可以防止90%的用户作弊(如果您的网站拥有技术精湛的网络用户,则会减少); 唉,如果你没有某种方法来识别用户(例如通过身份验证),就没有办法完全避免作弊(即使这样,人们也会创建sockpuppets来提高他们的投票数).
Facebook的"喜欢"按钮是非常不同的 - 它似乎不使用身份验证,但实际上它要求您登录到FB - 因此FB将投票计数存储在数据库中,与用户ID相对应 - 并且知道哪个用户投票决定了什么,防止大多数选民欺诈.
示例 - "谁投票的内容"表:
user_id | article_id
1234         1
1234         5
1100         1
如果没有用户ID,则需要设置一些匿名ID.正如我上面所概述的,这可以做到,但每次用户删除他们的cookie时,他都将作为系统的全新用户出现.由于会话是使用 cookie 实现的,因此同样的问题也适用于会话.
如果您绝对需要允许匿名投票,则可以在会话中存储此用户投票的文章列表:
{ 1, 5 }
并在访问页面时检查它.如果你将你的cookie和会话到期时间设置得足够长,这将是一种很好的工作 - 但是,一旦用户清除了他们的cookie(或者他们过期了),bamf他已经离开并将看起来像一个新用户.使用当前技术无法阻止这种情况(是的,有"持久性cookie","flash cookies","evercookies"等等,但最终它们只是某种临时存储,用户可以擦除).
| 归档时间: | 
 | 
| 查看次数: | 423 次 | 
| 最近记录: |