App打卡考勤防作弊实践

949 阅读3分钟

大概在17,18年后各大公司的打卡考勤方式就从原来门口安装的固定打卡机大规模的转化为手机移动端App 打卡

我司项目上一线员工的打卡考勤方式也在那时候转为App 打卡,以前是每个项目各自为营的统计打卡;移动互联网化后整个公司的一线员工考勤数据就可以很方便的进行统计分析,以便更加全局的掌握数据。

这个时候就遇到了一个问题,所有的考勤软件都要面对的:打卡考勤防作弊。

我将从以下几个方面分享防作弊的实践:

1.篡改时间

我们的App 有离线打卡功能,就是在地下室,停车场等网络信号不佳或者服务器端异常导致打卡数据无法及时上传的优化体验,数据缓存在移动端,那么打卡时间也是由移动端确认的,用户在修改手机时间的时候需要一个校准的过程。思路大概概括为手机开机后会系统会记录一个开机时间K1,在开机的时候会有一个联网的精确时间J1,后面用户修改系统时间我们可以根据新的开机间隔时间K2来推测出精确的时间J2

2.模拟位置

模拟位置是作弊手段的重灾区,市面上非常多的多开软件,虚拟位置的App,我们的做法是读取系统的已安装的应用列表,只要安装了在我们禁止使用的黑名单列表中的App,我们都都会禁止用户打卡

3.频繁更换手机代打卡

每部手机我们都会生成一段唯一的串码信息,每次打卡都会检测手机是否和前几次的打卡手机一直,不是要求重新的绑定给项目人力审核,并触发拍照打卡的机制

4.替他人代打卡

代替他人打卡也非常常见的场景,放一台专门打卡的手机在公司,先到公司的同事帮助还在家里的同事打卡,也就是无法操作人是否本人,目前我们在接入人脸识别和活体检测机制,保证操作人就是本人。

5.拍照打卡添加加密水印

随机的抽查打卡的用户要使用自定义的水印相机进行拍照打卡,水印相机里面含有加密的经纬度和时间等信息生成二维码,因为有加密处理,用户无法进行PS 修改等

6.使用第三方人臉識別 活體檢測SDK來防止作弊 考慮到用戶量和接入簡易度以及降本增效价格问题,我們使用Github一個第三方SDK:FaceVerificationSDK github.com/AnyLifeZLB/…, 有動作活體和靜默活體兩種方式進行防止作弊

那做了这么多的措施是不是就可以100%完全的防止考勤作弊了呢?答案是消极的,手机设备在用户手上,只要多付出一点成本还有更高级的作弊手法,比如阿里的钉钉也被人破解,相关公司还被钉钉告上了法庭。那么就需要公司的管理,流程等方面创新优化策略一起来完成防作弊了。