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

2024-01-27

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

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

我使用的是 ASP.NET MVC,因此会话变量是没有问题的。

我是否对此过度关注?


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

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

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

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

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

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

祝你好运

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

投票 - 阻止客户端滥用 - ASP.NET MVC 的相关文章

  • .net MVC、SelectList 和 LINQ

    我刚开始在 MVC 框架中使用 Html DropDownList 并且很难理解如何从数据库中选择数据以绑定到 DropDownList 有没有一种简单的方法可以从标准 LINQ 查询返回可绑定列表 例如 SelectList Select
  • ASP .net MVC中每个数据存储区域的寿命是多少

    我已经看到了一些关于这些的解释 但没有什么可以真正比较它们的开始 结束或重叠的地方 也没有很好的使用例子 以下每个数据集合的生命周期是多少 我还缺什么吗 应用 Session ViewData TempData 应用程序 只要您的应用程序正
  • 如何有效地测试action是否用属性(AuthorizeAttribute)修饰?

    我正在使用 MVC 并且有一种情况OnActionExecuting 我需要确定即将执行的Action方法是否用属性修饰 AuthorizeAttribute尤其 我不是问授权是否成功 失败 而是问该方法是否需要授权 对于非 MVC 人员
  • ASP.NET MVC 中是否有嵌套母版页?

    我想知道 MVC 框架是否可以利用嵌套母版页 如果是这样 有人有一些关于如何实现这一目标的信息吗 我们经常使用嵌套母版页 以便将布局与标准包含和站点范围标记分开 如下所示 站长
  • ASP MVC:何时调用 IController Dispose()?

    我正在对我的一个较大的 MVC 应用程序进行大规模重构 速度调整 它已经部署到生产环境几个月了 我开始在连接池中等待连接超时 我已将问题追溯到连接未正确处理的情况 鉴于此 我对我的基本控制器进行了以下更改 public class MyBa
  • 实体类型 ApplicationUser 不是当前上下文模型的一部分。在项目开始时使用了两个不同的数据库

    我使用实体框架创建了一个 MVC 4 应用程序来读取数据并将数据写入我在 Azure 数据库上托管的数据库 Azure 数据库应该保存应用程序数据和应用程序的登录数据 但是 当我第一次创建应用程序时 我忘记删除到本地计算机的连接字符串 因此
  • ASP.NET Core MVC防伪

    尝试在核心 mvc 项目中打开防伪功能 但没有成功 做了什么 添加过滤器以自动检查每个 POST 请求的防伪令牌 services AddMvc o gt o Filters Add new AutoValidateAntiforgeryT
  • 具有 ASP.NET Identity 的 MVC 5 - 用户登录时获取声明

    我正在使用 OWIN 2 0 在登录用户后 我想从数据库中检索现有的声明 但如果我尝试获取用户的声明 它们将为空 如果我将相同的代码放入任何被调用的后续控制器中 那么声明就在那里 似乎只有在首次登录后的下一个请求之前 这些声明才可用 为什么
  • .net 4.7 中的依赖注入?

    我对 DI 有哪些集成选项有点困惑 我发现它对于 net core 对于我的特定项目 来说非常简单 但我不需要构建跨平台应用程序 也看不到使用 core 的优势 但是 net 框架应用程序似乎仍然使用 Global asax 设置且没有 S
  • 服务层设计。将事物放入服务层的原因

    我有一些与设计相关的问题 should service layer interfaces居住在一个domain layer 例如user service 将代码部分移动到单独层的主要原因是什么 should service layer居住在
  • 如何使自定义错误页面在 ASP.NET MVC 4 中工作

    我想要显示 500 404 和 403 的自定义错误页面 这是我所做的 在 web config 中启用自定义错误 如下所示
  • 有没有更好的方法使用 MVC 4 和 Entity Framework 5 添加子记录?

    我正在学习 MVC 并结合实体框架处理其无状态性质 我的问题是 有没有更优雅的方式来处理下面的场景 我有两个 POCO 实体 public class Contest public long ID get set public IColle
  • AutoMapper.Mapper 不包含 CreateMap 的定义

    这可能是一个基本问题 但想知道我没有得到 AutoMapper Mapper CreateMap 方法 我使用了错误的 AutoMapper 参考 包吗 谢谢 静态版本CreateMap方法在 4 2 中已弃用 然后在版本 5 0 中从 A
  • 包括过滤器子集合[重复]

    这个问题在这里已经有答案了 我在为 LINQ 查询中包含的项目添加一些过滤条件时遇到一些困难 我的查询就像 var item Context Order Include Inner Include Inner first Include I
  • asp.net mvc 4 - 可以在每个线程共享 DbContext 吗?

    From 每个 Web 请求一个 DbContext 为什么 https stackoverflow com questions 10585478 one dbcontext per web request why 我的理解是 DbCont
  • 带有 HttpContext 的 ASP.NET MVC 单元测试控制器

    我正在尝试为我的一个控制器编写一个单元测试 以验证视图是否正确返回 但该控制器有一个访问 HttpContext Current Session 的基本控制器 每次我创建控制器的新实例时 都会调用 basecontroller 构造函数 并
  • MVC 项目中的 .Rdlc 报告 - 托管调试助手“PInvokeStackImbalance”

    我即将完成并运行我的上一份报告 我在其他报告中没有遇到过这个问题 我正在尝试根据数据库记录创建报告 当我通过 LocalReport 创建报告并为报告创建参数时 收到错误消息 托管调试助手 PInvokeStackImbalance 调用
  • ASP.NET MVC 应用程序中的工作单元模式

    我一直在看这个优秀的blog http www nhforge org wikis patternsandpractices nhibernate and the unit of work pattern aspx标题为 NHibernat
  • Visual Studio 智能感知搞砸了

    所以我是 MVC4 和 C 的新手 我已经设计这个网站大约两周了 智能感知没有任何问题 两天来 Visual studio 告诉我 Viewbag 和其他 命令不是我的项目的一部分 我可能错过了一些东西 或者它告诉我 Viewbag 在当前
  • 构建 ViewModel 的合适粒度是多少?

    我正在开发一个新项目 在看到以前项目的一些困难后 这些项目没有提供足够的视图与模型的分离 特别是使用 MVC 模型和视图开始有点相互渗透 我想使用 MVVM 我了解基本概念 并且很高兴开始使用它 然而 有一件事我有点忽略 ViewModel

随机推荐

  • cakePHP 中的时间重定向?

    header 刷新 5 url pagetoredirect php 如果我们想在 5 秒内重定向我们的页面 我们可以使用它 cakephp 有没有办法在 5 秒内重定向页面 如果是 请告诉我 你可以尝试使用AppControllerhea
  • 将 package.json 中的 proxy 设置为 env 变量

    我需要设置proxy我的价值package json在运行时 就像使用环境变量一样 这怎么可能做到呢 package json name demo proxy process env MY PROXY VAL lt how dependen
  • 如何在Unity和C#中延迟一个方法?

    我的名字是 Laurenz 我的问题是如何使用 c 延迟 Unity 中精灵的颜色变化 现在我有一个随机生成器 它根据数字选择颜色 但这种情况每帧都会发生 所以现在真正的挑战是如何延迟它以减少它的变化 public class colorc
  • 什么控制 WSDL 的肥皂地址位置中使用的 url?

    我正在通过来自iis 6的https公开wcf服务 据我所知 我已经验证了iis中的绑定设置正确 是的 肯定站点id为 1 并且已完成iisreset 当我运行这个时 C Program Files x86 Microsoft Visual
  • 为什么 HTML5 视频无法在 IOS 8 WebApp(webview) 中播放?

    简单的 HTML5 视频可以在 Safari 浏览器上播放 但将其添加到主屏幕 独立Web应用程序 后 它不起作用 它可以在 iOS7 上运行 但在 iOS8 上停止运行
  • 如何从不同的 swift 文件调用函数

    我的 Xcode 6 beta 2 项目中有多个 UIViewController 类型的 swift 文件 我基本上想知道文件 A 中的一些数据以便在文件 B 中使用 我的文件都是 UIViewController 并且我创建了一个没有参
  • 如何使用VBA自动化多个Office应用程序?

    虽然我已经在 MS Access 2007 和 Excel 2007 的单个应用程序中完成了 VBA 项目 但我还没有同时自动化多个应用程序 广义的项目是开放访问 运行一些更新查询 将数据附加到各种表 然后Excel需要获取数据 Excel
  • bash:jar:找不到命令

    我在用着Jenkins部署构建 我们需要从 a 中提取文件 war进入某个目录 我们有一个 xml文件 其中包含从以下位置提取文件的命令 war文件并启动服务器 构建正在正确创建 但是 war提取未发生 目标文件夹留空 Jenkins 控制
  • Appium服务器未检测到通过wifi连接的设备

    did adb tcpip 5555 and adb connect ipaddress The adb devices显示设备 但是当我运行 appium 服务器时 它显示没有连接 Android 设备 appium python代码是
  • 什么是 Packrat 解析?

    我知道并使用 bison yacc 但在解析世界中 围绕 Packrat 解析有很多讨论 它是什么 值得学习吗 Packrat 解析是一种提供渐近更好的性能 for 解析表达式语法 http en wikipedia org wiki Pa
  • 从 Firestore 导出 json

    由于我们可以在Firebase RTDB控制台下载json文件 有什么方法可以导出Firestore集合 文档数据的json文件 我的主要目标之一是比较更新文档之前 之后的数据 谷歌让它变得比需要的更加困难 所以社区找到了一个解决方法 如果
  • 将平面拟合到 3D 中的一组点:scipy.optimize.minimize 与 scipy.linalg.lstsq

    给定一组 3D 点 一般问题是找到a b c平面方程的系数 形式为 z a x b y c 这样得到的平面就是best fit可能到那组点 In 这个答案 https stackoverflow com a 20700063 1391441
  • 如何让表单元素“记住”选择?

    我现在正在使用 php 构建一个 更改分类 页面 我使用Mysql作为数据库 目前我使用PHP来获取有关分类的所有mysql信息 然后我像这样输出 table
  • Microsoft Edge 的 URL 长度限制

    有人知道 Microsoft Edge 的 URL 长度限制吗 如您所知 Internet Explorer 对 URL 长度有限制 最大长度为 2048 Edge 怎么样 我想 现在应该已经消失了 极限似乎已到81578 个字符 之后 我
  • 如何使用Ramda管道?

    背景 我正在尝试使用 Ramda 编写 2 个函数 但我遇到了问题pipe 这意味着我不知道如何使用它 Code 假设我有一个返回数组的函数 var createQuery params gt getSQLQuery params getM
  • 断言失败:电影播放器​​的激活状态错误 (1)

    我正在 iPad 应用程序的一个页面上播放视频 m4v 然后它会转到另一个视图控制器来播放另一个视频 它播放正常 但是当第二个视频播放完毕时 它会抛出断言失败 错误是 Assertion failure in MPMoviePlayerCo
  • Getx Flutter - 更新列表中的项目不是反应性的

    我使用 getx 作为我的 flutter 应用程序的状态管理 但我在更新列表中的值时遇到困难 所以我有一个参数为 isFollowing 的用户模型 当我单击按钮时 isFollowing 变量将发生变化并且颜色也应更新 但这并没有发生
  • 放置 libgdx Screen 的正确位置在哪里

    您好 我正在开发一款游戏 我想知道如何处理资源 因为我遇到了内存问题 我有这样的事情 public SplashScreen implements Screen Override public void render float delta
  • Flexbox - 垂直居中并匹配大小

    我使用 Flex 有两个相邻的按钮 并且它们的内容垂直居中 到目前为止效果很好 但是 当在移动页面上查看我的网站时 使用响应式设计来缩放页面 第二个按钮 其中的文本较少 的大小会与其同伴的大小不同 因此 目标是垂直对齐按钮上的文本 并使两个
  • 投票 - 阻止客户端滥用 - ASP.NET MVC

    所以我设计了这个投票的东西 它不会让某人在 24 小时内为同一篇文章投票两次 然而 假设一个人投票 并且在看到该人能够投票或者他处于 24 小时窗口内之后 我禁用投票按钮 顺便说一句 这都是 Ajax 但是 当一个人关闭浏览器并重新打开甚至