这篇文章应该不适合在社媒发布,于是在blog上谈谈我的碎碎念。
早在去年年底我就在采购页看到了晚查寝打卡系统的招标信息,看当时的技术参数中有提到“定位打卡”、“人脸识别”,结合八万块钱的预算,我便估计这个做不出什么东西。学工处的出发点我能够猜得非常明确:统一各学院查寝的方式,减少工作量、便于管理。
今年1月起,打卡系统上线,首批面向某学院的六十余人展开小规模测试。寒假期间琢磨了一晚上,这个系统便不再有悬念。我起初以为技术标准中提到的定位功能是会调用学校APP的JSBridge,当时有想过劫持JS返回自定义的位置,结果这个功能根本就没有实现。
不知是否是出于上公网比较麻烦的心态,打卡系统以一种变相的方式实现了所谓“定位”——只对校园内网开放。我一方面觉得这比较无用:我完全可以在宿舍外、校园内进行打卡,这样其只能保证我在打卡时间在学校内,打卡完我再出门还是如何便都管不着了;另一方面觉得这有些不太公平的意思:去年10月起,学校(大抵是出于安全的考虑)禁止了连接校园WiFi的未付费用户访问校园内网资源,体测系统尚可通过其它方式解决,但打卡系统似乎默认了每一间宿舍(或者比如你住单人间)都至少有一个人购买了校园网,反而使得其有些阴谋的味道。
通过对JS的分析,打卡系统的逻辑大致如下:
- 每天门禁后的半小时(此前为10分钟,或许是10分钟可能因为某些事情而显得实在紧张,第二轮启动后改为30分钟)内,由打卡人(默认为寝室长)进入打卡系统,对每一位被打卡人(寝室成员)录制4秒视频,视频录制以纯JS的方式实现。
- 前端 不负责验证 视频内人脸,固定抽取视频中的最后一帧作为打卡照片,调用JS对图片打上打卡人姓名、打卡人学号、打卡时间的水印后,将视频与打卡照片一并提交到后端,此时前端提示打卡成功。
- 后端异步核验打卡照片与人脸库的相似度,判断打卡照片是否为本人打卡。若核验失败则视为未打卡,由辅导员或其指定的年级、班级负责人比对打卡视频,手动输入理由。
总而言之目前看来,该系统仍然存在包括但不限于以下问题:
- 隐私信息泄露风险。辅导员及各级负责人均可直接查询到被打卡人、被打卡人的父母、被打卡人的舍友的姓名、电话,每天的打卡视频。
- 人脸信息来源成谜。根据分析,人脸比对似乎是依据学校人脸库,若被打卡人未录入人脸信息则无法正常进行比对。根据目前测试结果来看,核验失败率高达30%左右,这无疑反而加重辅导员核验负担。而根据管理要求,不得将人脸识别作为唯一验证方式,无疑与该系统要求相悖。
- 实际打卡效力不强。核验方法无法做到系统初衷:保障每一位学生在校。此前我尝试搓了以上传视频模拟打卡的代码,但显然甚至用不到这块。已经有人尝试过使用视频通话可以正常进行打卡(且后台核验通过),若不由辅导员一一查看打卡视频,根本无法保证打卡效力。
- 打卡系统强制使用校园网。本科生、硕士生均无SSLVPN使用权限,尽管校园网单宽套餐30元/月的定价不算高,但对比同类学校,我校的校园网质量属于是拉穿地心,打卡系统的要求相当于平白加重学生负担。
OS:感觉打卡系统的预算砍个0再找个计算机相关专业的学生也能搓出来,要不还是用钉钉吧……
据了解,目前该系统第二轮在纪检学院、教院、美院、马院、环资学院的2025级;法学院的2024级试运行,尚不知什么时候会扩展到全校。但无疑这是“防君子不防小人”的方案,对此前始终采用钉钉&门禁机器打卡的学院而言,监管力度反而放松一些了。