今天,我在我的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>问题:
此代码将以10秒的间隔通知输入字段的值。在第一次警告之后,我通过查看浏览器源代码来更改浏览器中的输入字段值。它提醒我后来增加的价值,这对我不好。
真实生活场景:
我有一个虚拟教室,学生和老师都参加了一堂课。我每隔5秒发送一次ajax请求,以更新后端的类持续时间,然后在db中的工期字段中添加+5,稍后,学生必须根据他们在课堂上花费的时间支付给我们。我担心,如果任何一个聪明人只是在浏览器中编辑源代码,而不是在5秒后发送请求,他改为1小时(为了论证)来欺骗我的逻辑。如何防止客户端的任何非法活动?
发布于 2012-11-14 16:51:59
您无法阻止用户更改JavaScript值。
相反,您应该在服务器上验证输入。
在这种情况下,正如注释中所建议的那样,您应该使用服务器时间记录开始和结束时间。
发布于 2012-11-14 16:49:04
简单地检测他们提出的每一个请求(如果这是一个虚拟教室,就会发生一些事情,对吗?)在服务器端,当他们访问某个地方(数据库)时,保存它。有一个会话开始和结束的表。
https://stackoverflow.com/questions/13382980
复制相似问题