Javascript HTML前端安全性

Javascript HTML前端安全性,javascript,jquery,html,ajax,Javascript,Jquery,Html,Ajax,今天,我在我的web应用程序中发现了一个安全漏洞(如果在其他地方提到这个,请原谅,因为我无法在上面找到它)。考虑这个代码: <html> <head> <script> intv = setTimeout(function(){test()} , 10000); function test(){ val = document.getElementById('

今天,我在我的web应用程序中发现了一个安全漏洞(如果在其他地方提到这个,请原谅,因为我无法在上面找到它)。考虑这个代码:

<html>
    <head>
        <script>
            intv = setTimeout(function(){test()} , 10000);
            function test(){
                val = document.getElementById('tt').value;
                alert(val);
                intv = setTimeout(function(){test()} , 10000);
            }
        </script>
    </head>
    <body>
       <input type="hidden" value="10" id="tt">
    </body>
</html>

intv=setTimeout(函数(){test()},10000);
功能测试(){
val=document.getElementById('tt')。值;
警报(val);
intv=setTimeout(函数(){test()},10000);
}
问题:

此代码将以10秒的间隔警告输入字段的值。在第一次发出警报后,我通过查看其源代码更改浏览器中的输入字段值。它提醒了我以后增加的价值,这对我来说并不好

现实生活场景:


我有一个虚拟教室,学生和老师都参加课堂。我每5秒发送一次ajax请求,以更新后端的课程时长,并在db的时长字段中添加
+5
,然后学生必须根据他们在课程中花费的时长向我们付款。我担心,如果任何聪明人只是在浏览器中编辑源代码,而不是在5秒钟后发送请求,他会改为1小时(为了争论),以欺骗我的逻辑。如何在客户端防止任何类型的非法活动?

只需检测他们发出的每个请求(如果是一个虚拟教室,有什么事情正在进行?),并在服务器端保存他们访问某个地方(数据库)的请求。有一个会话开始和结束的表格。

您无法阻止用户更改JavaScript值

相反,您应该在服务器上验证输入


在这种情况下,正如注释中所建议的,您应该使用服务器时间记录开始和结束时间

你为什么不用服务器的时钟呢?记录会话开始和结束时的服务器时间,然后使用这些值计算课程长度。此问题与此场景无关。问题是如何避免这样的事件:用户正在更改他们不应该更改的值。虽然你的建议很好,但没有办法。在这一点上,你是在客户领域,他们有权力做任何他们想做的事情。这与你的问题密切相关。它与您选择的实现方式无关。Javascript并不是满足您需求的好技术。阿什给了你更好的建议。听着,我明白了。除了我提到的情景之外。如果我必须在一小时后将用户踢出该怎么办。显然,这些计算是在客户端完成的。只要拒绝向他们发送更多数据(是视频馈送吗?请将其切断!)存储用户已被删除,并在数据请求中对此进行检查。如果它们已被删除-忽略它们的数据请求。