薛 霽,李英祥,劉子杰
(成都信息工程大學(xué) 通信工程學(xué)院,成都 610225)
伴隨著我國科學(xué)技術(shù)以及高等教育事業(yè)的蓬勃發(fā)展,學(xué)校規(guī)模不斷擴(kuò)大,招生人數(shù)急劇上升,學(xué)生在校期間的日常安全問題受到越來越多的重視[1],這對學(xué)校的日常監(jiān)督工作提出了更高的要求.目前,高校各種學(xué)生信息管理系統(tǒng)比比皆是,但是比較關(guān)注學(xué)生安全信息管理方面的系統(tǒng)少之又少,尤其是包含數(shù)據(jù)分析的此類系統(tǒng)更是微乎其微[2].針對當(dāng)前合理的需求,本文設(shè)計了一套針對學(xué)生安全的管理系統(tǒng)[3],通過對學(xué)生攜帶設(shè)備上傳的數(shù)據(jù)進(jìn)行分析實現(xiàn)對學(xué)生的安全管理,有效的完善了學(xué)校的安全監(jiān)督機(jī)制.綜上所述,本文論述的學(xué)生安全管理系統(tǒng)具有相當(dāng)可觀的應(yīng)用推廣價值.
高校學(xué)生安全管理系統(tǒng)由后臺服務(wù)器和學(xué)生便攜設(shè)備兩部分組成,本文主要介紹后臺服務(wù)器以及后臺服務(wù)器同學(xué)生便攜設(shè)備進(jìn)行數(shù)據(jù)交互這兩部分內(nèi)容,關(guān)于學(xué)生便攜設(shè)備本身的涉及在此不做介紹.
設(shè)計思路如下:學(xué)生每日攜帶便攜設(shè)備進(jìn)出學(xué)校,便攜設(shè)備實現(xiàn)早晚定時自動開關(guān)機(jī),定時上傳數(shù)據(jù),每條數(shù)據(jù)包含設(shè)備編號,經(jīng)緯度坐標(biāo),周圍基站ID,當(dāng)前時間等多種類型的信息.學(xué)生在進(jìn)入和離開學(xué)校時可通過考勤按鍵觸發(fā)考勤功能,緊急情況下通過觸發(fā)SOS報警按鍵實現(xiàn)報警功能,數(shù)據(jù)會及時上傳到后臺服務(wù)器,服務(wù)器通過socket實現(xiàn)對設(shè)備上傳數(shù)據(jù)的接收以及寫入數(shù)據(jù)庫,數(shù)據(jù)第一時間顯示在管理平臺,有助于學(xué)校對學(xué)生進(jìn)行及時的管理與幫助.
本次設(shè)計采用WAMP環(huán)境開發(fā),即Windows+Apache+MySQL+PHP[4],WAMP是Windows系統(tǒng)中開發(fā)網(wǎng)站的經(jīng)典組合,對于不熟悉Apache+MySQL+PHP環(huán)境的新手,可以通過一鍵安裝的方式快速部署服務(wù)器所需要的環(huán)境,將系統(tǒng)部署在www目錄下即可實現(xiàn)外部訪問.這是WAMP集成環(huán)境的最大優(yōu)勢.
針對傳統(tǒng)的C/S與B/S架構(gòu),經(jīng)過多方面綜合考慮,本次設(shè)計采用B/S與C/S兩種模式的混合模式進(jìn)行設(shè)計[5].服務(wù)器對便攜設(shè)備上傳數(shù)據(jù)的接收過程采用C/S架構(gòu),通過Workerman框架實現(xiàn)對數(shù)據(jù)的接收和存儲.管理員通過管理平臺對學(xué)生日常安全進(jìn)行監(jiān)控為B/S架構(gòu),管理平臺通過ThinkPHP框架進(jìn)行搭建.這樣的設(shè)計方式只需在服務(wù)器端對系統(tǒng)進(jìn)行開發(fā)以及編寫socket的服務(wù)器端代碼,有效的減少了整套系統(tǒng)開發(fā)的成本,并且對客戶端要求較低[6],學(xué)生只需要攜帶便攜設(shè)備,管理員可直接通過瀏覽器對學(xué)生進(jìn)行安全監(jiān)管.兩種框架的配合使用,既保證了學(xué)生安全管理系統(tǒng)的數(shù)據(jù)來源,又保證了管理員通過系統(tǒng)對學(xué)生進(jìn)行實時監(jiān)控.這是本次設(shè)計的第一個創(chuàng)新點
本節(jié)將對系統(tǒng)的三個重點模塊進(jìn)行詳細(xì)闡述,分別為后臺管理平臺,socket設(shè)計,以及數(shù)據(jù)庫設(shè)計.
后臺服務(wù)器上的管理平臺采用html+css+js實現(xiàn)前臺頁面,后臺采用PHP語言進(jìn)行開發(fā).PHP在眾多的WEB開發(fā)服務(wù)器端腳本語言擁有突出的優(yōu)勢.首先它是開源的,所有的源代碼均可下載瀏覽.其次PHP的使用是免費的,這樣在開發(fā)成本上大大勝過了ASP與JSP[7].最后,PHP具有良好的平臺移植性,對UNIX,LINUX,Windows都有良好的支持.
目前主流的PHP框架種類非常多,包括國外的Laravel、Phalcon、Symfony2,以及國內(nèi)的主流框架ThinkPHP,YII,CI等.本次設(shè)計采用的是國內(nèi)的ThinkPHP框架.
ThinkPHP是一個快速、兼容而且簡單的輕量級國產(chǎn)PHP開發(fā)框架,采用MVC模式和面向?qū)ο蟮慕Y(jié)構(gòu)[8],遵循Apache2開源協(xié)議,具有豐富的查詢機(jī)制,簡單的CURD操作.支持MySQL、PgSQL、Sqlite多種數(shù)據(jù)庫以及PDO擴(kuò)展,自身包含了底層架構(gòu)、兼容處理、基類庫、數(shù)據(jù)庫訪問層、模板引擎、緩存機(jī)制、插件機(jī)制、角色認(rèn)證、表單處理等常用的組件,并且對于跨版本、跨平臺和跨數(shù)據(jù)庫移植都比較方便.
后臺管理平臺在設(shè)計的過程中劃分為三種權(quán)限,不同權(quán)限具有不同的功能.用戶在登錄頁面輸入賬號密碼后,在登錄信息正確的情況下,后臺會判斷用戶對應(yīng)的權(quán)限,從而跳轉(zhuǎn)到不同的頁面,實現(xiàn)不同的功能.同時高級權(quán)限可以實現(xiàn)對低級權(quán)限的管理,低級權(quán)限僅有基本操作功能.
本次設(shè)計的權(quán)限包括:超級管理員,學(xué)校負(fù)責(zé)人,班主任.權(quán)限管理描述如圖1所示,不同權(quán)限詳細(xì)功能如下所述:
(1)超級管理員:賬號由開發(fā)者進(jìn)行管理,主要負(fù)責(zé)為學(xué)校負(fù)責(zé)人分配初始賬號,管理所有校級負(fù)責(zé)人,添加刪除設(shè)備,監(jiān)控所有設(shè)備運作情況等.
(2)學(xué)校負(fù)責(zé)人:編寫學(xué)?;拘畔?為不同班級班主任分配賬號,申請設(shè)備,查看該校所有設(shè)備運作情況,查看各個班級學(xué)生基本信息,以及查看各班負(fù)責(zé)人上報的班級學(xué)生每日安全數(shù)據(jù)信息等.
(3)班主任:直接對學(xué)生安全進(jìn)行負(fù)責(zé),包括學(xué)生與設(shè)備綁定,查看班級學(xué)生每日考勤時間,學(xué)生當(dāng)天運動軌跡,學(xué)生是否有上傳報警信息等.
(1)SQL注入攻擊
眾所周知,SQL注入攻擊是一種常見的WEB攻擊形式,這種攻擊存在的原因主要是因為某些系統(tǒng)后臺程序沒有實現(xiàn)對用戶輸入的原始數(shù)據(jù)進(jìn)行嚴(yán)格的驗證,從而使得某些不法分子通過惡意手段獲取后臺數(shù)據(jù)庫的用戶數(shù)據(jù)信息后進(jìn)一步執(zhí)行某些破壞性操作.
圖1 后臺管理平臺權(quán)限介紹
針對SQL注入攻擊,后臺系統(tǒng)的查詢語句采用數(shù)組方式進(jìn)行查詢,針對小部分字符串查詢條件,采用預(yù)處理機(jī)制對存在安全隱患的數(shù)據(jù)進(jìn)行過濾[7].
(2)URL加密算法
考慮到數(shù)據(jù)在傳輸過程中的安全問題,加密是每一個系統(tǒng)必須做的工作.本次設(shè)計的加密工作主要在URL上進(jìn)行.針對URL上的某些重要參數(shù),通過加密的方式讓使用者看到加密后的數(shù)據(jù)信息.加密算法與解密算法由開發(fā)者進(jìn)行編寫,這是本次設(shè)計的另一個創(chuàng)新點.
PHP中常見的加密算法如MD5加密,sha1加密,base64加密等[8].其中常見的MD5加密算法為單向散列加密技術(shù),base64雖然屬于對稱加密算法,但是由于頻繁使用,存在安全隱患.另外在某些第三方網(wǎng)站,可以通過付費的方式對傳統(tǒng)的加密算法進(jìn)行破譯.綜合考慮,本次設(shè)計的加密算法由開發(fā)者自行編寫.
本次設(shè)計將整個加密/解密過程封裝為兩個函數(shù).加密的具體實現(xiàn)方法為:首先對用戶輸入的字符信息通過字符串拼接,得到新的字符串.其次,對新字符串通過base64加密函數(shù)進(jìn)行加密,再通過字符串分割函數(shù)將加密后的字符串分割為數(shù)組.再次,通過數(shù)組循環(huán)的方式對數(shù)組的每個元素再次進(jìn)行拼接,得到新數(shù)組,將其轉(zhuǎn)回字符串.最終,替換字符串的某些特殊字符,這樣便得到了加密后的最終結(jié)果,最終加密效果會在本文的測試結(jié)果部分進(jìn)行展示.
加密實現(xiàn)效果如下:用戶提交的表單數(shù)據(jù)通過異步的方式傳入后臺,后臺程序針對重要參數(shù)進(jìn)行加密,將加密結(jié)果輸出到前臺,前臺將得到的加密參數(shù)以及其他參數(shù)通過URL拼接的方式跳轉(zhuǎn)到指定頁面,后臺通過對應(yīng)解密算法進(jìn)行解密,恢復(fù)原始數(shù)據(jù),然后進(jìn)行業(yè)務(wù)邏輯處理,有效地提高了系統(tǒng)的安全性.
針對學(xué)生便攜設(shè)備同公網(wǎng)服務(wù)器的數(shù)據(jù)通信,本次設(shè)計采用socket的方式進(jìn)行數(shù)據(jù)的收發(fā),在公網(wǎng)服務(wù)器上通過Workerman框架實現(xiàn)對便攜設(shè)備上傳數(shù)據(jù)的處理.
Socket是進(jìn)程間通訊的一種機(jī)制.Socket因為要進(jìn)行網(wǎng)絡(luò)間信息交互,所以其必須指定其在網(wǎng)絡(luò)上的地址.因此一個socket主要由5個信息構(gòu)成,分別為:協(xié)議,本地地址,本地端口號,遠(yuǎn)地地址,遠(yuǎn)地端口號.Socket的主要類型包括三種[9]:(1)流式socket,通訊雙方需要建立一種可靠連接,采用TCP協(xié)議.(2)數(shù)據(jù)報socket,它是一種面向無連接的服務(wù).(3)原始socket,這種方式允許對底層協(xié)議如IP或ICMP直接訪問.
Workerman是一款純PHP開發(fā)的開源高性能的PHP socket服務(wù)器框架.基于Workerman可以實現(xiàn)任意TCP/UDP通訊服務(wù)器端開發(fā).Workerman的主要優(yōu)勢有:純PHP開發(fā),支持多進(jìn)程,支持TCP/UDP,Http等多種協(xié)議,支持高并發(fā),支持長連接等[10].
Workerman通過開啟一個主進(jìn)程和多個子進(jìn)程對外提供服務(wù),每個進(jìn)程獨立工作,主進(jìn)程負(fù)責(zé)監(jiān)控子進(jìn)程,子進(jìn)程負(fù)責(zé)數(shù)據(jù)的接收以及業(yè)務(wù)邏輯處理.每個進(jìn)程可以實現(xiàn)上千客戶端的并發(fā)連接.
本次設(shè)計中socket數(shù)據(jù)接收部分詳細(xì)過程為:數(shù)據(jù)傳輸格式采用JSON,服務(wù)器端通過開啟端口接收客戶端上傳的數(shù)據(jù),對數(shù)據(jù)進(jìn)行解析并進(jìn)行處理.針對異常數(shù)據(jù)以及異常操作向客戶端返回錯誤信息,停止操作.在數(shù)據(jù)正確寫入數(shù)據(jù)庫的情況下,并向客戶端返回正常描述,與客戶端斷開連接,重新開始監(jiān)聽工作.
系統(tǒng)中Socket數(shù)據(jù)接收工作流程圖如圖2所示.
本次系統(tǒng)設(shè)計采用的數(shù)據(jù)庫為MySQL.MySQL數(shù)據(jù)庫是目前主流的大型通用數(shù)據(jù)庫管理系統(tǒng)之一,其憑借其強(qiáng)大的功能,較快的響應(yīng)速度和開放源代碼等特點,在Web系統(tǒng)中得到了廣泛的應(yīng)用[11].
圖2 Workerman工作流程圖
此處使用MySQL專業(yè)的可視化工具Navicat for MySQL來設(shè)計數(shù)據(jù)庫,Navicat是一款設(shè)計高效,可靠的數(shù)據(jù)庫管理工具,以圖形界面的方式幫助開發(fā)人員實現(xiàn)快速開發(fā).
系統(tǒng)中的主要數(shù)據(jù)表包含:學(xué)生基本信息表,管理員信息表,班級信息表[12].
(1)管理員信息表
管理員信息表staff_info,此表存放包括系統(tǒng)用戶基本信息,用于登陸系統(tǒng)時通過username字段以及password字段對用戶輸入信息的驗證.通過auth與auth_id兩個字段實現(xiàn)與外表進(jìn)行關(guān)聯(lián),考慮到系統(tǒng)安全問題,password字段采用MD5加密算法.管理員信息表設(shè)計如表1所示.
(2)學(xué)生信息表
學(xué)生信息表student_info,此表用于存放學(xué)生的基本信息,通過device_id字段與智能設(shè)備表進(jìn)行外鍵關(guān)聯(lián),通過class_id字段與class表進(jìn)行外鍵關(guān)聯(lián).學(xué)生基本信息表設(shè)計如表2所示.
(3)班級信息表
班級信息表用于存放當(dāng)前學(xué)校所有班級的基本信息,包括班級名稱,所屬年級,班主任等信息,通過grade_id外鍵實現(xiàn)與grade年級信息表外鍵關(guān)聯(lián).班級信息表設(shè)計如表3所示.
表1 管理員信息表
表2 學(xué)生基本信息表
表3 班級信息表
通過Workerman框架實現(xiàn)了對便攜設(shè)備上傳數(shù)據(jù)的接收,此處通過print_r函數(shù)將接收結(jié)果輸出到windows的cmd中,數(shù)據(jù)接收結(jié)果如圖3所示.
圖3 Workerman接收結(jié)果
通過測試結(jié)果發(fā)現(xiàn),對于設(shè)備id號這個敏感參數(shù),通過自行編寫的加密算法成功實現(xiàn)對其加密并在URL中進(jìn)行傳輸,后臺程序首先對該加密參數(shù)通過對應(yīng)的解密算法進(jìn)行解密處理,恢復(fù)出用戶輸入的原始數(shù)據(jù),再進(jìn)行對數(shù)據(jù)庫操作,并將結(jié)果返回給用戶,有效的維護(hù)了系統(tǒng)的安全性,保證敏感數(shù)據(jù)不會被泄露.
圖4 URL加密
本文提出了一種針對高校學(xué)生安全問題的解決方案,詳細(xì)闡述了通過ThinkPHP框架以及Workerman框架實現(xiàn)從數(shù)據(jù)接收,到數(shù)據(jù)存儲,最后實現(xiàn)數(shù)據(jù)展示及操作的整個流程.本次設(shè)計提出的方案目前已正式投入使用,使用過程中安全系數(shù)高,運行穩(wěn)定,今后將對系統(tǒng)的功能進(jìn)一步優(yōu)化與擴(kuò)展.
1劉云生.學(xué)生安全管理中的教育放逐與應(yīng)對之策.中國教育學(xué)刊,2016,(6):47-53.
2陳鳳良.高校學(xué)生安全信息系統(tǒng)設(shè)計初探.綿陽師范學(xué)院學(xué)報,2012,31(8):72-75,92.
3金程成.學(xué)生安全狀態(tài)管理系統(tǒng)的設(shè)計與實現(xiàn)[碩士學(xué)位論文].武漢:華中科技大學(xué),2013.
4何佩佩,韓漢光,謝穎華.基于WAMP的網(wǎng)站流量數(shù)據(jù)分析.計算機(jī)系統(tǒng)應(yīng)用,2014,23(7):94-99.
5劉敏智.基于C/S和B/S混合模式的教務(wù)管理系統(tǒng)的設(shè)計[碩士學(xué)位論文].石家莊:河北科技大學(xué),2013.
6張勁勇.基于C/S和B/S混合結(jié)構(gòu)學(xué)生管理系統(tǒng)的設(shè)計與實現(xiàn).科技信息,2010,(17):55-56.[doi:10.3969/j.issn.1673-1328.2010.17.055]
7齊劑.PHP技術(shù)應(yīng)用于中小企業(yè)網(wǎng)站開發(fā)[碩士學(xué)位論文].長春:吉林大學(xué),2012.
8徐誠斌,王金平.MVC在ThinkPHP框架中的應(yīng)用研究.信息與電腦(理論版),2011,(3):160.
9徐朋.基于SOCKET的跨平臺通訊系統(tǒng)的研究與設(shè)計[碩士學(xué)位論文].沈陽:大連理工大學(xué),2015.
10劉新星.基于ZigBee的遠(yuǎn)程控制智能家居系統(tǒng)設(shè)計[碩士學(xué)位論文].武漢:武漢郵電科學(xué)研究院,2016.
11黃冬英.基于分布式數(shù)據(jù)庫的高校學(xué)生檔案管理系統(tǒng)設(shè)計與實現(xiàn)[碩士學(xué)位論文].蘇州:蘇州大學(xué),2016.
12常瑩,朱慶華,賈燕軍.學(xué)生管理系統(tǒng)中的數(shù)據(jù)庫設(shè)計.教育教學(xué)論壇,2012,(38):244-245.