gpt4 book ai didi

asp.net-mvc - 投票 - 阻止客户端滥用 - ASP.NET MVC

转载 作者:行者123 更新时间:2023-12-02 06:19:58 25 4
gpt4 key购买 nike

所以我设计了这个投票功能,它不会让某人在 24 小时内为同一篇文章投票两次。然而,假设一个人投票,并且在看到该人能够投票或者他处于 24 小时窗口内之后,我禁用投票按钮(顺便说一句,这都是 Ajax)。

但是当一个人关闭浏览器并重新打开甚至刷新页面时该怎么办?显然,由于我的算法,他将无法投票,但该人最终仍会成功调用服务器。因此,如果他真的愿意,他会不断刷新页面并点击投票,给服务器带来不必要的负载。如何通过执行某种客户端操作或其他操作来避免这种情况?

我正在使用 ASP.NET MVC,因此 session 变量是不可能的。

我是不是太担心了?

最佳答案

如果投票仅由登录(已知)的成员进行,那么您应该不会有任何问题。

另一方面,如果每个人都可以投票,那么您需要存储所有用户投票事件:

  • 时间戳
  • 民意调查
  • 投票
  • ip
  • 用户代理
  • 用户唯一性 Cookie

所以你需要一个随机散列作为 cookie 发送出去。这将确保您不会接受同一个人对同一民意调查的另一次投票。

如果用户删除了他的 cookie,您将退回到 B 计划,即您在 24 小时内不允许同一 IP 和用户代理组合进行超过(例如)10 次投票。

该系统并不完美,因为用户可以更改 IP 和(更容易)用户代理。您需要先进的模式检测算法来检测可疑投票。存储所有用户投票事件的好处是,您可以稍后使用调度程序处理这些事件,或者将投票外包给可以为您处理这些事件的其他人。

祝你好运

关于asp.net-mvc - 投票 - 阻止客户端滥用 - ASP.NET MVC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2260406/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com