防直接访问 防重复提交

简介:

防止直接访问PHP页面
1.可以在A加COOKIE,B判断COOKIE后用完删掉COOKIE
2. 使用$_SERVER['HTTP_REFERER'] 得到链接到当前页面的前一页面的地址
3.token令牌

Java代码   收藏代码
  1. <?php  
  2. /* 
  3. * PHP简单利用token防止表单重复提交 
  4. * 此处理方法纯粹是为了给初学者参考 
  5. */  
  6. session_start();  
  7. function set_token()  
  8. {  
  9.     $_SESSION['token'] = md5(microtime(true));  
  10. }  
  11.   
  12. function valid_token()  
  13. {  
  14.     $return = $_REQUEST['token'] === $_SESSION['token'] ? true : false;  
  15.     set_token();  
  16.     return $return;  
  17. }  
  18.   
  19. //如果token为空则生成一个token  
  20. if (!isset($_SESSION['token']) || $_SESSION['token'] == '') {  
  21.     set_token();  
  22. }  
  23.   
  24. if (isset($_POST['test'])) {  
  25.     if (!valid_token()) {  
  26.         echo "token error";  
  27.     } else {  
  28.         echo '成功提交,Value:' . $_POST['test'];  
  29.     }  
  30. }  
  31. ?>  
  32. <form method="post" action="">  
  33.     <input type="hidden" name="token" value="<?php echo $_SESSION['token'] ?>">  
  34.     <input type="text" name="test" value="Default">  
  35.     <input type="submit" value="提交"/>  
  36. </form>  

基于业务方面的控制

1)基于DB中退款订单状态的验证

2)利用数据库唯一索引机制的验证

3)基于缓存的计数器验证:

由于数据库的操作比较消耗性能,了解到redis的计数器也是原子性操作。果断采用计数器。既可以提高性能,还不用存储,而且能提升qps的峰值。还是以订单退款为例子:
每次request进来则新建一个以orderId为key的计数器,然后+1。如果>1(不能获得锁): 说明有操作在进行,删除。如果=1(获得锁): 可以操作。操作结束(删除锁):删除这个计数器。

 

前端防止重复提交,禁用按钮或链接

Java代码   收藏代码
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">  
  2. <html>  
  3. <head>  
  4. <title>测试</title>  
  5. </head>  
  6. <script language="javascript">  
  7. var t = null;  
  8. var flag = true;  
  9. function check(obj) {  
  10.     if (flag) {  
  11.         obj.disabled = flag;  
  12.         flag = false;  
  13.         t = setTimeout(function(){disable(obj)}, 5000); // 5秒间隔  
  14.         window.open("http://www.baidu.com""newWindow");  
  15.     }  
  16. }  
  17.   
  18. function disable(obj) {  
  19.     obj.disabled = flag;  
  20.     flag = true;  
  21.     if (t != null)  
  22.     clearTimeout(t);  
  23. }  
  24. </script>  
  25. <body>  
  26. <a href="#" onclick="check(this)">ceshi1</a>  
  27. </body>  
  28. </html>  

9秒后按钮激活代码

Java代码   收藏代码
  1. <input class="button" type="submit" name="rulesubmit" value="同 意" style="height: 23px">  
  2. <input class="button" type="button" name="return" value="不同意" style="height: 23px" onclick="javascript:history.go(-1);">  
  3. </center>  
  4. </form>  
  5.   
  6. <script type="text/javascript">  
  7. var secs = 9;  
  8. var wait = secs * 1000;  
  9. document.bbrules.rulesubmit.value = "同 意(" + secs + ")";  
  10. document.bbrules.rulesubmit.disabled = true;  
  11. for(i = 1; i <= secs; i++) {  
  12.         window.setTimeout("update(" + i + ")", i * 1000);  
  13. }  
  14. window.setTimeout("timer()", wait);  
  15. function update(num, value) {  
  16.         if(num == (wait/1000)) {  
  17.                 document.bbrules.rulesubmit.value = "同 意";  
  18.         } else {  
  19.                 printnr = (wait / 1000) - num;  
  20.                 document.bbrules.rulesubmit.value = "同 意(" + printnr + ")";  
  21.         }  
  22. }  
  23. function timer() {  
  24.         document.bbrules.rulesubmit.disabled = false;  
  25.         document.bbrules.rulesubmit.value = "同 意";  
  26. }  
  27. </script>  

jQuery one当使用 one() 方法时,每个元素只能运行一次事件处理器函数

Java代码   收藏代码
  1. $("p").one("click",function(){    
  2. });  
2324

 

相关文章
XSRF CRFS(跨站请求伪造,单点登录攻击) 特点和原理
概念:跨站请求伪造(英语:Cross-site request forgery),也被称为 one-click attack 或者 session riding,通常缩写为 CSRF 或者 XSRF, 是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。跟跨网站脚本(XSS)相比,XSS 利用的是用户对指定网站的信任,CSRF 利用的是网站对用户网页浏览器的信任。
XSRF CRFS(跨站请求伪造,单点登录攻击) 特点和原理
|
监控 安全 搜索推荐
网站后台数据被入侵篡改了如何解决
网站后台被黑客攻击了怎么办,最近接到一个客户的诉求反映说网站被攻击了后台数据总是被篡改和泄露,而且维持这个状况已经很长时间了,了解完才发现原来早期用的是thinkphp系统源码来搭建的网站,代码版本可以来说是非常古董的,而且后台漏洞非常的多,后面找了一个技术来解决这个问题,但是这个过程他又花了不少时间和钱,漏洞修完过段时间又被反反复复的篡改会员数据,于是他们干脆就改成了完全静态的网站,这个方法只能是治标不治本。
429 0
网站后台数据被入侵篡改了如何解决
|
JavaScript API
数据劫持2
Reflect和Object来说,框架封装更需要健壮性强的Reflect Proxy处理响应式数据更具优势 Object.defineProperty那些缺点在vue框架里也提供了相应的api进行解决
134 0
数据劫持2
数据劫持
对属性的读取和修改拦截简单来说就是数据的任何变化都要能监测到,这样才能根据数据变化做对应操作
297 0
数据劫持
|
网络协议 网络安全 数据安全/隐私保护
HTTPS如何保证防劫持?
    SSL证书,网络的发展已经成为人们生活中非常重要的组成。因此,保护用户隐私,维护数据传输安全成为SSL证书最重要的功能。但是流量劫持、HTTPS劫持等情况还是比较常见的,如何防止劫持呢?SSL证书服务,SSL证书安装,SSL证书,HTTPS劫持.  一、HTTPS劫持  目前互联网上发生的流量劫持基本是两种手段来实现的:  域名劫持:通过劫持掉域名的DNS解析结果,将HTTP请求劫持到特定IP上,使得客户端和攻击者的服务器建立TCP连接,而非和目标服务器直接连接,这样攻击者就可以对内容进行窃取或篡改。
2445 0
|
Web App开发 安全 网络安全
烟草网站如何实现防攻击、防病毒、防篡改
网站,作为企业网络公众形象的载体,承担了企业形象宣传的重任。在我国,烟草施行的是国家专卖制度,既关注行业行政管理,又关注企业的生产运营,烟草网站既担负着政策信息发布、政府信息公开的职责,又兼有面对烟草企业、消费者等进行信息交互的职责。
1717 0
|
安全 数据库 数据安全/隐私保护
如何解决网站被篡改提示该站点可能受到黑客攻击,部分页面已被非法篡改!
最近一段时间,我们SINE安全公司一连接到数十个公司网站被跳转到彩票,博彩网站上去,客户反映从百度搜索网站进去,直接跳转到彩票网站上,直接输入网址没有跳转,导致客户网站的流量急剧下滑,做的百度推广跟搜狗推广,都给彩票网站做广告了,公司领导高度重视网站安全的问题,因为给公司的形象以及名誉带来的损失太大了,我们安排安全技术人员对其网站进行全面的网站安全检测,对网站存在的漏洞,以及木马后门进行全面的清除与漏洞修复,安全加固。
6588 0
|
Web App开发 安全 网络协议
网站域名被拦截,网站被流量劫持,服务器攻击,网站被跨区恶意点击,问题的定义与解答
网站域名被拦截 就是 被百度或腾讯安全中心或360浏览器的安全中心提示拦截风险了 (妥善解决办法 如果网站类型不是BC SQ站的话 可以检查下网站有无被入侵被挂马导致的风险提示拦截 如果网站被篡改导致的那么就要仔细检查下网站的程序漏洞以及后门木马的查杀了)   网站被流量劫持 就是 地区dns的劫持 如访问你网站www.
1919 0