专栏首页博文视点Broadview微信公众号页面有效期访问设置

微信公众号页面有效期访问设置

小编说:页面有效期访问,主要实现成员在进入页面后仅能在一段时间内进行操作,对于超过规定时间的成员将禁止操作。用于防止成员信息泄露或超时处理等。 本文选自《微信企业号开发完全自学手册》

页面有效期访问分为前台JS校验和后台时间校验,前台校验能够解决业务上的效果实现,而后台校验主要用于防止系统漏洞,增加系统安全性,应用场景如下:

场景一,成员薪资水平对于公司来说较为保密,减少员工之间不必要的薪资泄露是企业稳定的重要因素。因此当企业号作为企业服务,在引入人力资源系统时,薪资的页面查询,需要具有一定的时效性。当成员不慎未关闭页面时,为防止其他成员查看,可以在JS中加入时间控制,减少薪资等信息的泄露。

场景二,微信考勤打卡可以防止员工早退并提前打开考勤页面的情况下,回家进行微信考勤的漏洞。

场景三,在成员考勤补签、业务签收归档时,如果采用前台时间校验,则成员可以通过修改手机时间来实现信息的“逾期”处理或“预”处理,这时可以通过增加后台有效时间校验解决此类问题。

备注:建议在进行数据库操作时,同时使用JS校验和后台校验,这样方能够在实现客户体验的同时增加系统的安全性。

  • JS定时任务校验

JS定时任务是前台有效期校验的一种方式,当成员在当前页面访问超时的时候,将进行安全跳转。其实现方式多种多样,既可以通过setTimeout实现,也可以通过setInterval实现,示例代码如下:

<html>
<head>
   <title> JS定时任务校验</title>
</head>
<body>
   倒计时:<span id="curTime"></span><br/>
   基本工资:100000.00<br/>
   绩效工资:50000.00<br/>
   浮动工资:50000.00<br/>
   &nbsp;&nbsp;总计:100000.00<br/>
<body>
<script>
       var flag=60;
       function timedCount(){
            if(flag<0){ 
                //超过有效事,页面跳转
               location.href="http://www.baidu.com";
           }else{
                document.getElementById('curTime').innerHTML=flag;
               flag--;
               setTimeout("timedCount()",100);
           }
       } 
        //页面初始化执行
       timedCount();
    </script>
</html>

备注:setInterval() 方法是不停地调用函数,直到 clearInterval() 被调用或窗口被关闭,而setTimeout()是一定时间后执行“一次”函数。

  • 事件校验

事件校验,分为JS事件时间校验和后台session时间校验。当前台点击某个按钮时,能够通过JS获取本机时间进行校验。为了防止成员修改本机时间创建程序漏洞,因而增加后台时间校验,通过校验服务器时间来增加系统的安全性。

1 JS校验时间

当员工进行微信考勤,点击“考勤打卡”时,可校验员工是否长时间保持当前页面定位。如果超过有效时间,则需要员工重新获取定位后,方可以进行考勤。示例代码如下:

<html>
<head>
   <title>JS时间校验</title>
</head>
<body>
   当前GPS位置:<span id="curTime"></span><br/>
   经度:101.60156187500003<br/>
   纬度:35.603717439502084<br/>
   <div onclick="regesiter()" style="background-color:red;width:100px">考勤打卡</div>
<body>
<script>
       var flag=60;  //有效值,单位秒
       var beginTime=new Date();//初始化开始时间
       function regesiter(){
          /获取单击事件的当前时间
           var endTime=new Date();
           var temp=endTime.getTime()-beginTime.getTime();
           if(temp>flag*1000){
               alert("页面超时失效,需要重新刷新,是否刷新?");
               return ;
           }else{
               //继续运行
               alert("继续运行");
           }
       }
       </script>
</html>

2 后台时间校验

后台校验主要用于防止成员通过修改本机时间,从而跳过JS时间验证的问题。在页面初始化时存入当前时间,示例代码如下:

request.getSession().setAttribute("bgTime", new Date());

当点击“考勤打卡”后,通过JS校验进入后台进行时间校验,示例代码如下:

long interval=60L;//阈值
Date bgTime = (Date) request.getSession().getAttribute("bgTime");
Date edTime = new Date();
if((edTime.getTime()-bgTime.getTime())>interval*1000L){
    //重新设置,session
   PrintWriter out = response.getWriter();
    out.print("页面超时");
    out.flush();
    out.close();
}

备注:后台增加时间校验后,还需要进行JS校验是为了减少服务端压力。

本文分享自微信公众号 - 博文视点Broadview(bvbooks),作者:博文视点

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-03-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 使用Spring Session实现Spring Boot水平扩展

    Spring Boot应用通常会部署在多个Web服务器上同时提供服务,这样做有很多好处:

    博文视点Broadview
  • 推荐系统丨YouTube召回模型设计

    随着互联网行业的高速发展,人们获取信息的方式越来越多。人们对信息获取的有效性和针对性的需求随之出现,推荐系统也应运而生。推荐系统就是互联网时代的一种信息检索工具...

    博文视点Broadview
  • 技术人员的成长之路——这也是你的故事

    毕业于我国南部城市某985重点大学计算机系的“80后”青年李元芳,通过参加广州南方人才市场春季大型招聘会,从众多的应聘者中脱颖而出,被当时在广州乃至全国都小有名...

    博文视点Broadview
  • Go语言sync包的应用详解

    在并发编程中同步原语也就是我们通常说的锁的主要作用是保证多个线程或者 goroutine在访问同一片内存时不会出现混乱的问题。Go语言的sync包提供了常见的并...

    KevinYan
  • Kali Linux Web渗透测试手册(第二版) - 5.7 - 使用ZAP测试WebSokets

    由于HTTP是一种无状态协议,它将每个请求视为惟一的,与上一个和下一个请求无关,这就是为什么应用程序需要实现会话cookie等机制来管理会话中单个用户执行的操作...

    7089bAt@PowerLi
  • Kali Linux Web渗透测试手册(第二版) - 5.7 - 使用ZAP测试WebSokets

    thr0cyte,Gr33k,花花,MrTools,R1ght0us,7089bAt

    用户1631416
  • 深入理解MySQL 5.7 GTID系列(四): PREVIOUS GTID EVENT

    之所以把MySQL.GTID_EXECUTED表的作用和PREVIOUS GTID EVENT的改变放到一起进行描述是因为它们后面文章探讨的基础。这部分使用到了...

    wubx
  • Centos7下python3安装django

    Devops海洋的渔夫
  • leetcode-414-Third Maximum Number

    chenjx85
  • JMeter: Socket Exception in high concurrent parallel request

    2017-09-01 17:03:36,542 INFO o.a.j.p.h.s.HTTPHC4Impl$3: I/O exception (java.net....

    Jerry Wang

扫码关注云+社区

领取腾讯云代金券