0

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

<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>

问题:

此代码将以 10 秒的间隔提醒输入字段的值。在第一次警告后,我通过查看其源代码来更改浏览器中的输入字段值。它会提醒我稍后添加的值,这对我不利。

现实生活场景:

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

4

2 回答 2

0

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

于 2012-11-14T16:49:04.703 回答
0

您无法阻止用户更改 JavaScript 值。

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

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

于 2012-11-14T16:51:59.523 回答