这是一个在线考试:我应该让用户使用浏览器的后退和前进按钮,以及在用户已经参加考试时刷新页面。 在此先感谢您的答案和回复。如何捕获后退和前进按钮并使用Javascript刷新?
0
A
回答
3
我不认为解决方案应该依赖于客户端代码,因为它可以由客户端修改。我认为对于某些受控制的环境,您可以阻止客户端进入开发者模式,这可能会很好。
如果可以控制环境,限制键盘快捷键,右键单击并以全屏模式提供浏览器应该足以确保客户端正确完成任务。
否则,依赖于客户端和服务器之间的键/值令牌的系统应该完成这项工作。一些安全的在线服务依赖于这样的系统,如果您接受打破“后退”和“前进”功能以及刷新页面,则它运行良好。当客户端调用这样的功能时,您肯定可以模拟回调。
在某些情况下,仅在JavaScript上才有用,以确保页面显示。例如随机生成随机标识符和随机页面等。
在任何情况下(IMO),完全依靠JavaScript为安全目的不是(也不是)一个好主意。
编辑:
这里是一个证明的概念:
服务器生成uniqid和值使用HTML5本地存储功能的客户端存储。使用本地存储作为键/值注册表,我们可以存储页面阶段,并将每个重新加载与存储的密钥进行比较,并与服务器新生成的密钥进行比较。
它非常直接,用作服务器生成的令牌可以随机化很多,防止任何人猜测它。
足够长的服务器生成令牌甚至可以为客户端本地存储注册表提供一个很好的一次性加密密钥。
代码:
<?php
$stamp = uniqid();
?>
<!DOCTYPE html>
<html>
<head>
<script src="//cdnjs.cloudflare.com/ajax/libs/json2/20110223/json2.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script src="https://raw.github.com/andris9/jStorage/master/jstorage.js"></script>
<style>
body{background-color:blue;}
p{margin-left:auto;margin-right:auto;width:800px;background-color:gray;font-weight:bolder;padding:1em;}
</style>
<script>
// display nice messages
var err_reloaded_page = "page reloaded";
var keeper = '<?php echo $stamp; ?>';
var current = $.jStorage.get('state');
// first initialization, Exception
if(current == null){
$.jStorage.set('state',keeper);
current = $.jStorage.get('state');
}
if(current != keeper){
alert(err_reloaded_page);
}
</script>
</head>
<body>
<p>
Proof of concept<br/>
Can detect page reload by comparing a stamp created server-side, stored on the local storage and compared on each page reload.
</p>
</body>
</html>
相关问题
- 1. 如何使用javascript禁用后退和前进按钮
- 2. 后退按钮和使用AJAX刷新
- 3. 后退和前进按钮
- 4. 后退按钮刷新当前页面
- 5. 如何禁用浏览器的后退,前进和刷新按钮?
- 6. 如何以编程方式创建UIWebView的后退,前进和刷新按钮?
- 7. Android捕获后退按钮
- 8. 阵营使用后退/前进按钮
- 9. 使用浏览器的后退或前进按钮时捕捉
- 10. 如何禁用Mac用户的后退和刷新按钮?
- 11. IFRAME和后退/前进按钮
- 12. 使用Wicket模拟单元测试中的后退/前进/刷新按钮
- 13. 使用前进和后退按钮对图像进行迭代
- 14. 后退按钮使用JavaScript
- 15. 如何在按下后退按钮后刷新先前的活动?
- 16. 刷新视图和使用后退按钮时出现问题
- 17. Jquery中的后退按钮和刷新按钮
- 18. 使用Javascript按钮刷新按钮
- 19. 如何捕获后退按钮事件在Chrome,Firefox和IE
- 20. 如何获取浏览器导航(后退和前进按钮)按钮处理的JavaScript(如jQuery)
- 21. 后退按钮和Javascript
- 22. Javascript和后退按钮
- 23. Javascript和IE后退按钮
- 24. 按下后退按钮时强制刷新/刷新
- 25. 后退按钮刷新页面
- 26. 带刷新页面的后退按钮
- 27. Chrome后退按钮页面刷新 - ASP.net
- 28. 刷新上打后退按钮
- 29. 使用后退和前进按钮与历史API
- 30. JqueryMobile(SPA)禁用浏览器后退按钮并刷新?
我不认为你可以,因为这是一个浏览器的事情不是代码的事(我知道)。但是,查看锁定浏览器,我必须对其进行测试,并且它完全锁定您的计算机,直到您退出 –
到目前为止发现了什么? – JSuar
你为什么不简单地使用'unload'事件? ('
'或http://api.jquery.com/unload/) – tftd