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

管理员账号

2017-03-17

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

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

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

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

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

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

1 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()是一定时间后执行“一次”函数。

2 事件校验

事件校验,分为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校验是为了减少服务端压力。

读者评论

相关博文

  • 微信JSAPI模式与浏览器类型安全访问

    微信JSAPI模式与浏览器类型安全访问

    管理员账号 2017-03-16

    小编说:微信浏览器是在微信安装时内置在微信中的,针对浏览器的类型我们可以设置相应的安全策略——仅允许在微信内置浏览器中打开。本文选自《微信企业号开发完全自学手册》。 1 JSAPI模式介绍 在介绍JSAPI模式之前,首先需要介绍一下微...

    管理员账号 2017-03-16
    721 0 0 0