HTML前端安全性

时间:2012-11-14 16:31:42

标签: javascript jquery html ajax

今天我在我的网络应用程序中发现了一个安全漏洞(请原谅我,因为我无法在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请求以更新后端的类持续时间,并在db中的duration字段中添加+5,之后学生必须根据他们在课程中花费的时间向我们付款。我担心,如果任何聪明的人只是在浏览器中编辑源代码而不是在5秒后发送请求,他改为1小时(为了争论)欺骗我的逻辑。如何防止客户端的任何非法活动?

2 个答案:

答案 0 :(得分:0)

只需检测他们所做的每一个请求(如果它是虚拟教室,有什么东西在正确吗?),并在服务器端保存,当他们访问某个地方(数据库)时。有一个会议开始和结束的表格。

答案 1 :(得分:0)

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

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

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