【问题标题】:Rating system using http post - Avoiding abuse使用 http post 的评级系统 - 避免滥用
【发布时间】:2011-06-19 14:22:13
【问题描述】:

我有一个 html 用于使用 POST 来评价图像。这些图像是使用 SQL 随机选择的。

我一发布就注意到一些用户(使用用户 ID 识别)能够在短时间内为他们选择的图像投多次票。他们很可能正在利用处理 http POST 方式的缺陷。

作为临时解决方案,我添加了一些代码来检查图像是否在过去一小时内被同一个人评分。这可行,但并不理想,因为图像可能会在较短的时间内随机出现。

那么,我怎样才能确保单个评分针对正在显示的图像而拒绝同一随机选择的任何连续评分?

P.S:我可能会向匿名用户开放,因此也欢迎任何使用会话的建议。

【问题讨论】:

  • 投完票后为什么不解绑点击或隐藏投票部分
  • @gowri:这只是阻止大群羊的预防措施,但不会阻止狼群。
  • @gowri:这是我应用的部分解决方案。 POST 请求通过后,您可以按 F5 或单击后退按钮再次触发它。我需要的是某种方式来说明当前选择的随机图像已经被用户投票,因此评级不会被验证两次或更多次。

标签: php mysql html sql http-post


【解决方案1】:

制作user_idimage_id 的复合UNIQUE 约束。然后以INSERT ... ON DUPLICATE KEY UPDATE 格式运行查询。

【讨论】:

    【解决方案2】:

    如果您有可靠的方法在用户投票时识别用户(例如,用户必须注册才能参与),那么只需将用户投票给哪些图像的信息存储在您的数据库中,并且不再接受任何投票 (或者只是用最后一票覆盖结果)。

    如果您不识别用户,您可能永远无法获得可靠的系统,因为恶意用户可能会使用多个代理等来为特定图像创建投票。

    您还可以尝试通过为每张投票发布一个唯一的交易标识符来混淆计票过程,该标识符只能使用一次,但您对用户和图像关联保密。然后至少你不能重播或伪造投票(尽管它不会阻止某人只是重新加载页面加载并一遍又一遍地投票)。

    【讨论】:

      猜你喜欢
      • 2011-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-17
      • 1970-01-01
      • 2014-07-02
      • 2015-02-03
      • 1970-01-01
      相关资源
      最近更新 更多