基于扫描二维码验证登陆所在地的研究
- 格式:doc
- 大小:26.00 KB
- 文档页数:3
基于QR二维码的校园门禁审批验证系统设计作者:张国力张剑平来源:《现代信息科技》2020年第05期摘; 要:由新型冠状病毒感染的肺炎疫情防控形势积极向好的态势正在拓展之时,学校在做好各项疫情防控工作的同时,应积极做好人员返岗复工的准备工作。
为加强疫情监控,规避接触风险,文章完成了基于QR二维码的校园门禁审批验证系统的设计与实现,提供了更简单便捷的入校登记、审批验证的方式,为学校疫情防控筑牢第一道防线。
关键词:QR二维码;门禁;审批验证;系统设计中图分类号:TP23;TP391.44; ; ; 文献标识码:A 文章编号:2096-4706(2020)05-0029-03The Design of Campus Entrance Examination and Approval System Based on QR CodeZHANG Guoli,ZHANG Jianping(Dalian Jiaotong University,Dalian; 116028,China)Abstract:The positive situation of the prevention and control of the pneumonia epidemic of 2019-nCoV infection is expanding. While doing a good job of epidemic prevention and control,the school actively prepares for the staff to return to work. In order to strengthen the epidemic monitoring and avoid the risks brought by the contact,this paper has completed the design and implementation of the verification system of campus access control approval based on QR code,which provides a more simple and convenient way of registration,examination and approval verification for entering the campus,and builds the first line of defense for epidemic prevention and control.Keywords:QR code;access control;approval verification;system design0; 引; 言2020年的春节期间,新型冠状病毒(2019-nCoV)感染的肺炎疫情发生后,党中央、国务院迅速部署疫情防控工作,有力有效地遏制了疫情的蔓延势头。
智慧团建报道操作手册亲爱的共青团员们:广东共青团喊你回“家”报到啦!为入库团员信息,简化团员身份认证、团组织关系转移等流程,实现团员信息化、系统化管理,广东省共青团大力推出“智慧团建”平台。
本次团员报到本周截止。
还等什么,小编马上放大招!给大家介绍一下是团员报到步骤,注意看咯!步骤【01】扫描下方二维码注册扫描(团员报到)二维码(长按图片识别二维码)按页面提示进入“智慧团建”系统团员端手机号、密码、手机验证码如实填写所属地区:选择“地市”,“东莞”、“塘厦镇”步骤【02】点击“进入智慧团建”进入”团员报到"页面填写自己的信息★注意★(1)入团年月:团证首页上有注明自己的入团年月(一般为每年5月或12月)。
(2)所在团支部,此项很重要!一定要准确填写团支部简称!绝对不能出错!格式如下:搜索关键词:东莞市塘厦镇华正学校X班团支部注明:X代表是1-13班的班别号,例如东莞市塘厦镇华正学校811班团支部(3)若不清楚,可直接在搜索对话框内录入关键词“东莞市塘厦镇华正学校”搜索,再列表中寻找所在团支部。
填写说明:(1)收入一栏:职业为学生无收入(2)是否在支部担任团干职务:(班级团支书、组织委员、宣传委员选择:是) (普通团员选择:否)(3)户籍所在地是自己户口本上的所在地,其余信息以实际为准填写团员基本信息并提交提交以上为选填信息,根据自己的实际情况如实填写:1.职业:学生2.工作单位:东莞市塘厦华正学校3.团员编号:可在团证上查询,没有的不填4.入党年月:不填5.注册志愿者时间:不填或登陆“i志愿”查询报到成功请跳过“团员报到”常见问题解答找不到团员报到入口问题1.在哪里进行团员报到认证?回答:(1)扫描以下二维码。
(或从“广东共青团”、“广东青年之声”公众号进入)(2)团员报到前,需先填写本人或家长真实的手机号、登录密码、所属地区(直接选取你的常住地区即可),进行注册;若您已是“广东青年之声·智慧团建”用户,可直接使用用户手机号+密码进行登录后,进入团员报到环节。
用户通过扫描网页提供的二维码实现登陆信息获取,大家参考使用吧请先下载 snoopy 类代码如下:<?php/*** 微信公众平台PHP-SDK* Wechatauth为非官方微信登陆API* 用户通过扫描网页提供的二维码实现登陆信息获取* 主要实现如下功能:* get_login_code() 获取登陆授权码, 通过授权码才能获取二维码* get_code_image($code='') 将上面获取的授权码转换为图片二维码* verify_code() 鉴定是否登陆成功,返回200为最终授权成功.* get_login_cookie() 鉴定成功后调用此方法即可获取用户基本信息* sendNews($account,$title,$summary,$content,$pic,$srcurl='') 向一个微信账户发送图文信息* get_avatar($url) 获取用户头像图片数据* @author dodge <dodgepudding@>* @link* @version 1.1**/include "snoopy.class.php";class Wechatauth{private$cookie;private$_cookiename;private$_cookieexpired = 3600;private$_account = 'test';private$_datapath = './data/cookie_';private$debug;private$_logcallback;public$login_user; //当前登陆用户, 调用get_login_info后获取public function __construct($options){$this->_account = isset($options['account'])?$options['account']:'';$this->_datapath =isset($options['datapath'])?$options['datapath']:$this->_datapath;$this->debug = isset($options['debug'])?$options['debug']:false;$this->_logcallback =isset($options['logcallback'])?$options['logcallback']:false;$this->_cookiename = $this->_datapath.$this->_account;$this->getCookie($this->_cookiename);}/*** 把cookie写入缓存* @param string $filename 缓存文件名* @param string $content 文件内容* @return bool*/public function saveCookie($filename,$content){return file_put_contents($filename,$content);}/*** 读取cookie缓存内容* @param string $filename 缓存文件名* @return string cookie*/public function getCookie($filename){if (file_exists($filename)) {$mtime = filemtime($filename);if ($mtime<time()-$this->_cookieexpired) return false;$data = file_get_contents($filename);if ($data) $this->cookie = $data;}return$this->cookie;}/** 删除cookie*/public function deleteCookie($filename) {$this->cookie = '';@unlink($filename);return true;}private function log($log){if ($this->debug && function_exists($this->_logcallback)) {if (is_array($log)) $log = print_r($log,true);return call_user_func($this->_logcallback,$log);}}/*** 获取登陆二维码对应的授权码*/public function get_login_code(){if ($this->_logincode) return$this->_logincode;$t = time().strval(mt_rand(100,999));$codeurl ='https:///jslogin?appid=wx782c26e4c19acffb&redirect_uri=https%3A%2F%2Fwx.%2Fcgi-bin%2Fmmwebwx-bin%2Fwebwxnewloginpage&fun=new&lang=zh_CN&_='.$t;$send_snoopy = new Snoopy;$send_snoopy->fetch($codeurl);$result = $send_snoopy->results;if ($result) {preg_match("/window.QRLogin.uuid\s+=\s+\"([^\"]+)\"/",$result,$matches);if(count($matches)>1) {$this->_logincode = $matches[1];$_SESSION['login_step'] = 0;return$this->_logincode;}}return$result;}/*** 通过授权码获取对应的二维码图片地址* @param string $code* @return string image url*/public function get_code_image($code=''){if ($code=='') $code = $this->_logincode;if (!$code) return false;return '/qrcode/'.$this->_logincode.'?t=webwx';}/*** 设置二维码对应的授权码* @param string $code* @return class $this*/public function set_login_code($code) {$this->_logincode = $code;return$this;}/*** 二维码登陆验证** @return status:* >=400: invaild code; 408: not auth and wait, 400,401: not valid or expired* 201: just scaned but not confirm* 200: confirm then you can get user info*/public function verify_code() {if (!$this->_logincode) return false;$t = time().strval(mt_rand(100,999));$url ='https:///cgi-bin/mmwebwx-bin/login?uuid='.$this->_logincode.'&tip=1&_='. $t;$send_snoopy = new Snoopy;$send_snoopy->referer = "https:///";$send_snoopy->fetch($url);$result = $send_snoopy->results;$this->log('step1:'.$result);if ($result) {preg_match("/window\.code=(\d+)/",$result,$matches);if(count($matches)>1) {$status = intval($matches[1]);if ($status==201) $_SESSION['login_step'] = 1;if ($status==200) {preg_match("/ticket=([0-9a-z-_]+)&lang=zh_CN&scan=(\d+)/",$result,$matches);$this->log('step2:'.print_r($matches,true));if (count($matches)>1) {$ticket = $matches[1];$scan = $matches[2];$loginurl ='https:///cgi-bin/mmwebwx-bin/webwxnewloginpage?ticket='.$ticket.'&lang=zh_CN&scan= '.$scan.'&fun=new';$send_snoopy = new Snoopy;$send_snoopy->referer ="https:///";$send_snoopy->fetch($loginurl);$this->log('step3:'.print_r($send_snoopy->headers,true));foreach ($send_snoopy->headers as$key => $value) {$value = trim($value);if(strpos($value,'Set-Cookie:') !== false){$tmp =str_replace("Set-Cookie: ","",$value);$tmp =str_replace("Path=/","",$tmp);$tmp =str_replace("Domain=; ","",$tmp);$cookie.=$tmp;}}$cookie .="Domain=;";$this->cookie = $cookie;$this->saveCookie($this->_cookiename,$this->cookie);}}return$status;}}return false;}/*** 获取登陆的cookie** @param bool $is_array 是否以数值方式返回,默认否,返回字符串* @return string|array*/public function get_login_cookie($is_array = false){if (!$is_array) return$this->cookie;$c_arr = explode(';',$this->cookie);$cookie = array();foreach($c_arr as$item) {$kitem = explode('=',trim($item));if (count($kitem)>1) {$key = trim($kitem[0]);$val = trim($kitem[1]);if (!empty($val)) $cookie[$key] = $val;}}return$cookie;}/*** 授权登陆后获取用户登陆信息*/public function get_login_info(){if (!$this->cookie) return false;$t = time().strval(mt_rand(100,999));$send_snoopy = new Snoopy;$submit = 'https:///cgi-bin/mmwebwx-bin/webwxinit?r='.$t;$send_snoopy->rawheaders['Cookie']= $this->cookie;$send_snoopy->referer = "https:///";$send_snoopy->submit($submit,array());$this->log('login_info:'.$send_snoopy->results);$result = json_decode($send_snoopy->results,true);if ($result['BaseResponse']['Ret']<0) return false;$this->_login_user = $result['User'];return$result;}/*** 获取头像* @param string $url 传入从用户信息接口获取到的头像地址*/public function get_avatar($url) {if (!$this->cookie) return false;if (strpos($url, 'http')===false) {$url = ''.$url;}$send_snoopy = new Snoopy;$send_snoopy->rawheaders['Cookie']= $this->cookie;$send_snoopy->referer = "https:///";$send_snoopy->fetch($url);$result = $send_snoopy->results;if ($result)return$result;elsereturn false;}/*** 登出当前登陆用户*/public function logout(){if (!$this->cookie) return false;preg_match("/wxuin=(\w+);/",$this->cookie,$matches);if (count($matches)>1) $uid = $matches[1];preg_match("/wxsid=(\w+);/",$this->cookie,$matches);if (count($matches)>1) $sid = $matches[1];$this->log('logout: uid='.$uid.';sid='.$sid);$send_snoopy = new Snoopy;$submit ='https:///cgi-bin/mmwebwx-bin/webwxlogout?redirect=1&type=1';$send_snoopy->rawheaders['Cookie']= $this->cookie;$send_snoopy->referer = "https:///";$send_snoopy->submit($submit,array('uin'=>$uid,'sid'=>$sid));$this->deleteCookie($this->_cookiename);return true;}}。
高职院校大学生使用腾讯QC的现状及安全对策研究利用互联网交流的即时性,人们之间可以直接而又快速地沟通与交流,这就是ICQ 的最初设计诉求。
其中,I 代表的意思是“我”,C代表看见(See,发音和C一样),Q与你的英文YOU 发音接近,ICQ 的意思是我看见你了,可以说是近乎一种个人的通信玩具,用来在网上相互联络沟通,向所有使用注册用户提供ICQ的服务,然而谁也没有想到,这个产品一经推出,即刻风靡世界。
后来被美国在线AOL以近3亿美金的价格收购,并取得了惊人的用户成绩,每天平均有 1 000万用户在线,每个用户平均在线时间为3 h。
当时公司的主要业务是拓展无线网络寻呼系统。
随后腾讯自己的研发团队在1999年2月第一次推出腾讯中文版的ICQ,并逐渐在社会上流行开来。
时至今日,腾讯的中文汉化版的ICQ已经由最初的QQ2000版发展至现今的QQ2015升级版。
而且随着时间的向前推移,新的不断发展升级的QC版本还将继续由腾讯的专业研发团队不断推出。
但在这个过程中,却由于理想与现实转型期中出现的各种社会因素导致为数不少的学生走火入魔般地痴迷于网络聊天,特别是在聊天的过程中,对网友的真伪和各种披着华丽伪装的具有诱惑力的病毒陷阱、信息缺乏有力的识别而导致个人的QC密码、个人资料和聊天记录出现被盗。
安全风险日益增加,已经逐渐成为网络教育工作者一个不可忽视的重要问题。
1高职院校学生喜爱QQ的原因腾讯QQ的前身最初仅仅只是一个中文的ICQ而已,并没有人想到一个浑身稚气、天真可爱的小企鹅翻版变形成QQ外观形象,自从在中国出现并在逐渐流行与推广了不到20 年的今天,会如此火热地受到地不分东西南北、不分男女老少的普遍欢迎,特别是受到了高职院校广大年轻一代大学生的热情追捧与衷心喜爱。
其根本原因主要基于以下几个方面。
1.1丰富多彩的人性化设计和强大功能由于整个腾讯研发团队的团结求实与开拓进取,经过近十几年的不断更新升级,无论是PC版的腾讯QQ还是手机版的腾讯QQ均支持在线或离线消息收发,支持用户多人发言以及语音视频通话,这在客观上使得手机端、PC端QQ音视频功能得以实现。
医院室内定位导航系统的应用与实现研究作者:邱小清来源:《中国新通信》2022年第10期摘要:针对目前在医院患者难以找到科室的问题,研制出一套室内定位导航系统。
整个系统分为两个模块:机器端和用户端。
机器端系统能够识别使用者的声音,并按照使用者所问的问题进行路径计划,并产生相应的二维码。
用户端通过扫描二维码,可以即时地获取使用者的地理信息,并获得相应的导航信息。
在此基础上,对指纹识别算法和圆形定位算法进行了研究。
采用此方法可以节约医师与患者的工作时间,并能有效提高效率。
关键词:医院;室内定位导航系统;应用分析随着医疗条件不断改善,医疗资源的不断优化,规模以上的医院科室比较多。
患者从停车场到门诊挂号、就诊、缴费、检查,再到办理住院等一系列的诊疗流程,需要花费很多时间和精力。
根据调查,首次来医院就诊的患者,无论哪个年龄层,从进医院起,首先会先向到导诊台、服务中心、最近的医院窗口等方式前去寻求帮助;甚至有30%的复诊病人,也会在诊疗过程中通过寻求帮助以找到自己的目标科室。
很多医院都会在门诊部设置楼层地图和科室指引标识,以缓解患者迷路、寻找科室困难等问题,但实际的效果并不是特别理想。
为了解决上述问题,研制了一套室内导航系统,它不仅可以降低医疗成本,而且可以为病人制定全面的诊疗路径,提升患者的就诊满意度。
一、室内定位导航技术概述由于室内场景空间变得越来越大,出现了很多综合医院、机场、停车场等场所,越来越需要定位导航。
大型超市期望通过室内导航技术为顾客提供即时导航,并根据地理位置进行相应的市场推广。
医院期望能够实现对医疗仪器的即时位置,方便在有需求的情况下迅速呼叫,以期能对特定患者进行有效的定位,避免出现不良事故;在患者进入医院后,提供定位导航功能,帮助患者定位并导航,提高患者就诊的满意度。
高度危险的化工企业必须进行定位管理,以避免出现安全隐患等。
可以说,在零售、餐饮、物流、制造、化工、电力、医疗等领域,都显示出巨大的发展潜力。
QR码扫码身份验证QR码扫码身份验证QR码扫码身份验证是一种快速、安全、便捷的身份验证方式,随着移动支付和网络技术的发展,越来越多的场景开始采用QR码扫码身份验证,带来了很多便利。
QR码扫码身份验证通过在手机或其他设备上扫描二维码,验证个人的身份信息。
相比于传统的身份验证方式,如输入账号密码或使用实体卡片,QR码扫码身份验证更加高效。
只需要将手机对准二维码,即可完成身份验证,无需输入繁琐的信息。
这对于用户来说非常便捷,节省了宝贵的时间和精力。
QR码扫码身份验证也具有较高的安全性。
每个用户的身份验证二维码是独一无二的,通过算法生成,不容易被破解。
同时,系统会记录每次身份验证的时间和地点,确保用户的账号安全。
对于一些高风险的操作,如网银转账、购买高价值商----宋停云与您分享----品等,系统还可以要求用户进行额外的身份验证,提高安全性。
QR码扫码身份验证不仅可以应用于移动支付领域,还可以被广泛应用于其他场景。
例如,电子门禁系统可以采用QR码扫码身份验证,解决了传统门禁卡容易丢失或被冒用的问题。
医院的就诊挂号系统也可以通过QR码扫码身份验证,提供更加便捷的就诊流程。
此外,QR码扫码身份验证还可以用于会议签到、车辆通行等场景,将传统的纸质证件换成电子二维码,提高了效率和便利性。
当然,QR码扫码身份验证也存在一些问题。
首先,对于无法扫描二维码的用户,如老年人或视力有障碍的人群,可能会遇到困难。
其次,二维码的生成和识别需要相应的技术支持,一些落后的设备可能无法进行二维码扫描。
此外,QR码扫码身份验证也存在一定的安全风险,如用户手机被盗或二维码被他人冒用。
----宋停云与您分享----总的来说,QR码扫码身份验证作为一种新兴的身份验证方式,给我们的生活带来了很多便利。
随着技术的发展和应用场景的不断扩展,相信QR码扫码身份验证还将在更多领域得到应用,为我们的生活带来更多便捷和安全。
----宋停云与您分享----。
I G I T C W经验 交流Experience Exchange192DIGITCW2023.04随着我省电子政务应用系统的不断增加,应用系统的安全问题至关重要,数字证书能较好地解决系统的身份认证、数据加密、责任认定和防抵赖等问题,因此,在政务系统中得到了广泛的应用。
目前,江西省电子政务数字证书办理以线下方式为主,用户需要到现场才能办理数字证书,因此,进行政务数字证书“零跑腿”服务探索与应用十分必要。
1 江西政务数字证书服务现状[1]目前,江西省政务数字证书服务主要以现场方式为客户服务,全省有政务数字证书服务大厅13个,覆盖每个地级市,其中省会城市南昌设立了3个服务网点,负责江西省政务数字证书的现场办理和技术咨询。
1.1 现场线下服务方式实体网点系统可以用于面向最终用户提供各类政务数字证书服务,实体网点系统的基本业务功能包括单个证书制作、证书更新、证书撤销/挂起与恢复、用户证书下载、证书查询、证书统计等。
服务网点服务系统具有一些特殊业务功能,如批量证书制作、证书信息变更重签发、证书介质密码解锁、证书冻结、证书解冻、证书丢失补办、证书介质损坏重办、证书介质初始化、查询、统计、证书到期提醒、异常处理以及其他功能等。
实体网点服务人员承担的工作主要包括证书交付、用户资料收集、用户身份鉴别、信息录入、审核、证书下载、证书更新、证书吊销、密码解锁、证书补办、密钥恢复等工作。
1.2 服务方式单一办理政务数字证书相关信息在应用服务平台,实体大厅、官方网站和第三方互联网入口等服务渠道同源发布。
用户既可以通过网上查询,也可以来电咨询,或是在办证大厅现场了解最新的办证流程。
电子政务服务目前只满足就近服务网点现场办理,不能实现跨地区远程办理。
2 江西政务数字证书服务发展新形势和新要求2.1 江西政务数字证书服务发展新趋势[2]在疫情影响下,仅局限于线下办理的江西政务数字证书时代一去不复返;机遇与挑战并存的“零跑腿”服务已经来临。
谷歌身份验证器原理一、谷歌身份验证器的原理1. 时间同步的身份验证协议:谷歌身份验证器采用的是基于时间同步的身份验证协议,即TOTP(Time-Based One-Time Password)。
该协议通过一个密钥和时间信息生成一次性的验证码,用户在每次登陆时输入该验证码进行验证。
这种身份验证方式比传统的密码认证更加安全,因为生成的验证码只能在短时间内有效,减少了被破解的可能性。
2. 密钥和时间信息:谷歌身份验证器在绑定用户账户时会生成一个密钥,并将其保存在用户的手机或其他设备中。
同时,该应用程序会获取手机的当前时间信息,并与服务器进行时间同步。
密钥和时间信息是生成验证码的关键因素,只有在这两者的基础上才能正确生成一次性的验证码。
3. 生成验证码:谷歌身份验证器根据密钥和时间信息生成验证码的过程如下:(1)获取当前时间戳:谷歌身份验证器将手机获取的当前时间信息转换为时间戳,通常以30秒为一个时间窗口。
(2)将时间戳除以30秒得到一个整数值:时间戳除以30秒得到的整数值即为时间窗口序列号(T)。
(3)使用HMAC算法生成哈希值:谷歌身份验证器使用HMAC算法将密钥和时间窗口序列号作为输入生成一个字节串。
(4)截取部分字节并生成验证码:取哈希值的最后一个字节的低4位作为偏移量(O),然后从哈希值中截取4个字节,将其转换为整数,并对10的六次方取余,最终得到一个6位数字作为验证码。
4. 验证流程:用户在登陆网站或应用时,除了输入用户名和密码外,还需打开谷歌身份验证器获取当前生成的验证码,然后输入该验证码进行身份验证。
网站或应用会通过与用户手机上的谷歌身份验证器进行验证,确认验证码是否正确,从而实现双因素身份验证的目的。
二、工作流程1. 绑定账户:用户在设置中绑定账户时,会显示一个二维码供用户扫描。
该二维码中包含了账户信息,如网站名称、密钥等。
用户打开谷歌身份验证器,扫描二维码后,应用程序会将账户信息保存在手机中,并自动生成一组验证码。
⾃然⼈办税服务平台(ITS)(个⼈所得税部分)——APP端⽤户操作⼿册 1. 概述 1.1. 主要内容 2018年8⽉31⽇,第⼗三届全国⼈民代表⼤会常务委员会第五次会议通过了《中华⼈民共和国个⼈所得税法》第七次修正案,此次修正案最⼤的亮点是将建⽴综合与分类相结合的个⼈所得税税制。
基于上述背景,响应税制改⾰,为提⾼纳税服务,国家税务总局建⽴了局端⼤厅、扣缴客户端、Web端、APP端等多渠道的办税服务途径。
⾃然⼈办税服务平台分为Web端和APP端,两端数据实时同步、信息共享。
本⽂主要内容是介绍⾃然⼈办税服务平台(APP端)操作⽅法,帮助纳税⼈了解本系统和掌握各功能模块的使⽤(本操作⼿册仅供参考,可能会存在没有及时更新的情况,具体以系统现状为准)。
1.2. 预期读者 阅读⽤户群体为个⼈所得税纳税⼈。
2. 系统简介 ⾃然⼈办税服务平台(APP端)是个⼈所得税⽹上办税平台(简称:个⼈所得税APP)。
该平台包含了注册、登录和专项附加扣除、申报、缴款等功能,注册成功登录进⼊平台后可以⾃⾏完善、修改⾃然⼈信息,以后可以直接通过该平台进⾏相关涉税业务操作,使纳税⼈⽆需再往返税务机关办理,减轻了纳税⼈的办税负担,节约了纳税⼈的办税时间,更加⽅便、快捷的完成相关涉税业务操作。
个⼈所得税APP下载路径: 1. 通过⾃然⼈办税服务平台Web端⾸页点击“扫码登录”下⽅的【⼿机端下载】,扫描⼆维码下载安装。
2. 苹果iOS系统通过App Store搜索“个⼈所得税”下载安装。
3. 安卓Android系统⽬前已经在华为、⼩⽶、VIVO、OPPO等应⽤市场上架,后续会上架更多应⽤市场。
⼴⼤纳税⼈可以在上述应⽤市场搜索 “个⼈所得税”下载安装。
注:苹果IOS系统需要IOS 9.0或更⾼版本;安卓Android系统需要4.3或更⾼版本。
3. 系统功能介绍 3.1. 实名办税管理 实名办税管理是指根据《国家税务总局关于推⾏实名办税的意见》(税总发〔2016〕111号)和《国家税务总局关于发布<纳税信⽤管理办法(试⾏)>的公告》(国家税务总局公告2014年第40号)的要求,为验证纳税⼈、扣缴义务⼈(以下统称为“纳税⼈”)及其办税⼈员的⾝份真实性,保护其隐私信息和⾝份不被冒⽤,⽽采取的“先实名认证、后办税”的管理⽅式,为全⾯记录和归集纳税⼈办税⾏为与办税信息、建⽴健全纳税信⽤体系奠定坚实基础。
基于扫描二维码验证登陆所在地的研究
随着各行业大公司业务系统迅速发展、各种支撑系统和用户数量的不断增
加,网络规模迅速扩大,信息安全问题愈见突出。在用户登录和身份验证的安全
性保障环节各行各业都有自己的妙招。文章则是从验证用户登录地点的角度上提
出一种新的提高登陆系统安全的验证方式。结合移动定位技术以及扫描二维码登
陆的方式,来提高系统登录口令的安全,以及加固口令防盗的措施。
标签:身份验证;移动端定位;地理位置验证;扫描二维码
1 背景,目的及意义
1.1 背景及现状
对比原有的登录方式,在验证登陆时很少会验证登陆地点,这使得暗藏在任
何地理位置的黑客都可以通过某种方式盗取登陆口令,从而获取登陆权限。而在
现实生活中,大多数企业级登陆系统以及某些重要数据的登录系统,登陆的地理
位置经常只是局限在某个固定的物理位置上,在用户没有更换登录地点的特殊要
求时,一旦用户的登录地点不在原有固定的地理位置范围,我们可以认为该用户
的账号密码被窃取了,而文章对于验证登陆地点的研究正是由这个细节得到的启
发而开展的。同时对于移动办公,我们也给出相应的解决方案。
智能手机目前普遍存在以下四种定位方法:[1](1)GPS全球定位。在露天
环境下效果较好,获取位置信息非常精确。适合移动设备。(2)IP地址定位。
适用于接入互联网的设备,比如台式机。但是因为浏览器是将位置信息发送给ISP
服务商来解析,其IP地址与服务商所在位置有关,可能与用户所在位置不同,
所以这种方式的解析容易出现偏差。(3)WiFi定位。这种方式与GPS效果同样
精确,它通过多个WiFi接入点三角距离获取位置信息数据。适用于室内环境的
移动设备。(4)GMS网络定位。与TCP/IP协议不同,它基于GMS数据交换协
议。通常用于移动服务商的GPRS数据服务。解析方式精确。而在项目的数据测
试环节中,我们发现WiFi定位的精确度远高于GMS的定位精度。后面章节会
有WiFi定位的数据与GMS网络定位的数据比较。
HTML5调用地理信息的接口。由于HTML5提供了获取地理信息的接口,
所以这使得在调用智能手机的的定位系统的实施时可以依托于移动端的浏览器
来实现,而不必根据操作系统的不同去设计相应的c/s的客户端程序来获取移动
端的地理位置了,这样极大降低了系统开发的投入成本。而对于定位的应用来说,
它的精确性显得尤为重要。而现实生活中人们经常诟病的定位误差问题的一个主
要原因在于对定位的参考物中心的界定较为模糊,而对pc端的用户登录系统来
说,登录的地理位置就是pc所在的地理位置,也就是定位的参考物中心。因此
我们采用了扫描二维码的方式强制的让智能手机端以pc端的屏幕输出设备为参
考物获取地理位置信息,从而提高GPS定位的精确性。
1.2 目的及意义
本项目的目的在于通过验证用户登录时的地理信息来提高登陆系统的安全
性,即使在登陆口令被窃取后依然可以确保系统的安全防护级别,同时对于保密
性较高的数据访问操作,同样可以通过这种方式保证系统的安全。
本项目的意义在于通过验证指定登陆地点的方式提高登陆系统的安全性,虽
然不能避免被黑客攻破的可能,但这样的设计降低了用户名和密码被窃取的几
率,并且即使用户名和密码被窃取,非法人员也要在指定的地理范围内登录才能
通过密码口令登陆系统。极大的提高了对系统登录口令的安全保障。同时与验证
局域网地理登陆方式不同,通过地理位置定位的后台设置可以让真正登陆地点设
定在任何地方,而不是仅局限在某个区域。
2 系统建模
本项目基于SSH的JavaEE框架,对基于扫描二维码验证登陆所在地进行了
功能实现,以及录入登陆地点物理位置信息的实现。业务逻辑的设计上,通过先
后连续的验证登陆用户名、密码、登陆地点,最后给出验证的结果,这样进一步
增加了暴力破解的复杂程度。整体流程如图1所示。考虑到实际工作环境中对移
动办公的需求,我们也设计了一套移动办公的解决方案(如图2)。
3 系统实现
3.1 服务器端录入地理信息数据及验证方案
登陆用户在录入登陆地点录入地理信息时,先进入录入用户地理信息的页面
4次扫描二维码,服务器端保存这四次扫描的数据结果,通过这四点圈定扫描的
有效范围。本项目要求录入的4点大概呈现一个菱形,即垂直于屏幕方向的两个
有效点和平行于屏幕方向的两个有效点,验证登陆的有效范围则是采用四点圈定
出的矩形经纬范围(注意并不是菱形的经纬范围)。(如图3)这样实现的主要原
因不仅在于业务逻辑的方便,更重要得原因是在实际操作过程中我们发现扫描二
维码的角度在大约低于45°以后,几乎很难扫描成功,所以在业务逻辑上刻意的
圈定成菱形的有效扫描区就显得多此一举了。
3.2 基于HTML5的Geolocation API实现移动端地理位置信息的获取
基于浏览器的HTML5的位置定位原理实际上是HTML5的 Geolocation API
接口调用移动设备的定位功能来实现在网页中定位。用户首先要打开需要获取地
理位置的Web应用,然后应用向浏览器请求地理位置,浏览器弹出询问,询问
用户是否共享地理位置,假若用户允许共享地理位置,则浏览器从设备查询相关
地理信息,浏览器将相关信息发送到一个信任的位置服务器,然后位置服务器再
将具体的地理位置信息返回给浏览器。[2]由于在扫描二维码时,人手持移动端
设备会造成轻微的抖动现象,会对测量数据造成一定的误差。以下是对小组成员
在同一地理位置多次扫描二维码得到的信息的分析(见表1),分别为精确度在
150米和30米条件时得到的数据。经过对测试数据的分析:我们发现地理信息
的精确度不仅受手持抖动的影响,更重要的影响因素在于WiFi信号的强度,WiFi
信号强度越强,测量地理位置的数据波动范围越小;而当WiFi信号强度较弱的
时候,测量的数据波动范围较大。同时不同地点经纬度的波动范围是不同的,所
以本数据仅供参考,具体实现时还是要以实际测量结果为基准取舍数据的有效位
数。
3.3 二维码的生成策略
二维码的生成信息中绑定了此刻生成二维码的事务编号、调用移动端地理位
置信息的url。当用户扫描二维码之后,直接跳转到获取用户地理位置信息的网
页中。本项目是基于Google ZXing的二维码实现的。ZXing(Zebra Crossing)是
Google提供一个开源的、支持多种格式的条形码图像处理库,提供了二维码的
生成与解析的方法。[3]
4 结束语
文章主要研究了通过验证在原有登陆方式基础上增加验证地理位置合法性
的解决方案,此方案目的在于提高登陆系统的安全等级,并提出了固定地点办公
和移动办公的解决方案。随着各行业对网络安全的重视,我们相信在登陆系统的
身份验证,以及重要系统的登陆权限控制中,验证登陆地点的地理信息是否合法
的解决方案会占有一席之地。
参考文献
[1]易晓飞.HTML5 Geolocation API研究与应用[J].计算机光盘软件与应用,
2012,6:153-154.
[2]梁莉菁.基于Geolocation API的Html5地理位置追踪定位的实现[J].萍乡高
等专科学校学报,2014,6:97-101.
[3]程裕强,刘爱民,周国军.二维码生成算法研究[J].玉林师范学院学报,
2014,5:118-122+139.