Javascript MVC asp.net服务器端计时器,防止用户编辑计时器

Javascript MVC asp.net服务器端计时器,防止用户编辑计时器,javascript,c#,asp.net,asp.net-mvc,timer,Javascript,C#,Asp.net,Asp.net Mvc,Timer,我有一个MVC asp.net测验应用程序。你有可变的时间参加测验,如果时间用完,答案会自动提交 目前,我在Javascript中设置了计时器,在控制器-会话[“EndTime”]中保持的时间量。但是,我的理解是,当用Javascript实现时,用户可以编辑Javascript并更改计时器。如果为true,我如何在控制器中运行计时器,并在计时器用完后发送操作?服务器无法强制浏览器提交任何内容,JavaScript代码就是这样做的。而且,是的,用户可以选择修改,如果他或她想 服务器要做的是跟踪两件

我有一个MVC asp.net测验应用程序。你有可变的时间参加测验,如果时间用完,答案会自动提交

目前,我在Javascript中设置了计时器,在控制器-
会话[“EndTime”]
中保持的时间量。但是,我的理解是,当用Javascript实现时,用户可以编辑Javascript并更改计时器。如果为true,我如何在控制器中运行计时器,并在计时器用完后发送操作?

服务器无法强制浏览器提交任何内容,JavaScript代码就是这样做的。而且,是的,用户可以选择修改,如果他或她想

服务器要做的是跟踪两件事:

  • “测试”实例的唯一标识符
  • “测试”开始的日期/时间戳(或者相反,当它过期时,因为任一值携带相同数量的信息)
第一个值包含在发送到浏览器的表单中,基本上只是一个隐藏的表单字段。将测试结果发布到服务器时,服务器端代码使用标识符查找持久化的日期/时间戳,以将其与当前日期/时间进行比较。如果经过的时间超过预期,则拒绝测试结果并显示错误


基本上,服务器端代码不能强制用户提交结果。但是,它可以拒绝未及时提交的结果。

如果您从未编辑会话结束时间,那么您可以始终根据结束时间检查任何答案的服务器端时间戳,即使用户设法调整javascript端。因此,没有办法拥有一个安全计时器,当计时器过期时,提交表格?@LoganJahnke:我想这取决于你所说的“安全”是什么意思。“测试”的术语由您呈现给客户机的页面以及其中的代码定义。“安全性”是一个服务器问题。如果用户试图变得聪明,并在客户端更改代码,唯一的结果就是用户测试失败。使用signar我们可以强制客户端提交页面,我们可以在服务器上设置计时器,并在计时器过期时向客户端发送推送通知。一旦客户端接收到推送消息,我们就可以在服务器上提交页面。@AshishShukla:Signal不是魔术,客户端代码仍然像其他客户端代码一样受到用户干扰。来自signer的推送通知将建议客户端提交表单。但是,如果用户修改了客户端代码或以某种方式欺骗测试,则该建议将被忽略。在这种情况下实现signar将增加大量的复杂性,而不会带来任何好处。