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