999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

一種基于PDO和密碼鹽的用戶驗證模塊設計與實現

2020-04-23 11:17:28馬杰蔡妹
電子技術與軟件工程 2020年8期
關鍵詞:數據庫用戶

馬杰 蔡妹

(海南軟件職業技術學院 海南省瓊海市 571400)

1 引言

用戶驗證是信息管理系統中的一個重要模塊,是保障信息安全的第一道屏障。當前,基于用戶名和密碼的用戶驗證依然是各類應用系統主要的用戶身份驗證方式之一,特別是在中小型信息管理和Web 系統中。由于網絡數據傳輸的開放性、用戶使用弱密碼、軟件開發者缺乏信息安全意識等原因,靜態的用戶名和密碼存在比較大的安全風險,容易受到攻擊,網絡上用戶信息泄露的事件也層出不窮。對應用開發者來說,提升用戶驗證的安全性是一項迫切的任務。

作為一個輕量級的數據庫訪問接口,PDO 的運行效率、可移植性、安全性都有了大幅度提升。基于PDO 接口,結合面向對象和MVC 開發模式,融入通過密碼鹽和散列函數實現的加密算法,封裝一個具有良好安全性、復用性、可擴展性的用戶驗證模塊,不僅可以有效提升信息安全,還可以簡化開發難度、提高開發效率。

2 基于MVC模式的類設計與實現

如圖1 所示,User 類作為實體類與數據表user 進行對應,在User 類中實現對userName、userPassword 等各個成員變量的set/get訪問器方法。UserDAO 類基于User 類實現的數據存取操作。其中,getuserID()方法用來返回一個用戶的ID,getUser()用來返回一個User 類型的對象,getAllUsers()用戶返回所有用戶的對象鏈表。從安全性角度出發,所有SQL 處理的語句按照prepare()和execute()的方式進行實現。

Captcha 類為在服務器端生成驗證碼的工具類,該類中定義一個createImg()方法,通過隨機函數在數組中選擇4 個數字或者字母作為驗證碼,并通過PHP 圖形圖像繪制的方式返回一張圖片。這種設計讓驗證碼在服務器端生成,可以有效防止客戶生成端驗證帶來的安全隱患。

DataCheck 作為一個工具類用來在服務器端對各種用戶輸入提交的數據進行合法性驗證,例如用戶名、密碼、表單信息等,通過在服務器端對用戶提交數據的合法性驗證、防SQL 注入檢查,可以避免Web 前端驗證被繞過的風險,提升系統安全性。

PDOManager 類作為PDO 接口的具體實現,用來封裝數據庫連接的相關操作,考慮到數據庫訪問的頻繁度,本文采用單例模式進行實現,確保數據庫連接實例具有唯一性,減少系統資源消耗,提升運行效率。基于單例模式的PDO 管理類PDOManager 的實現如下:

3 用戶驗證模塊時序圖設計

如圖2 所示,用戶輸入用戶名、密碼、驗證碼進行登錄,驗證碼圖片對象由服務器端生成并發送到到客戶端,用戶表單提交的驗證碼首先與Session 中的驗證碼原始值進行對比驗證,不通過則清除掉Session 中的驗證碼原始值,然后重新調用Captcha 類新生成新的驗證碼和圖片對象。驗證碼驗證通過后,再調用DataCheck 工具類對用戶名、密碼進行合法性驗證,然后消除字符串中可能存在的SQL 安全隱患。在完成這兩步驗證之后,由UserDAO 對象通過單例模式的PDOManager 對象進行數據庫訪問操作,通過prepare()和execute()的方式執行SQL 查詢,判斷用戶名和密碼是否正確。在判斷時,密碼由用戶密碼和密碼鹽經過散列函數運算后生成。這樣,既保證了即使在服務器端用戶密碼也不可見,也可以增強密碼安全性,減低。

4 密碼鹽的構建與實現

密碼鹽是指在密碼的某個任意位置加入特定字符串,讓散列運算后的結果與原始密碼直接散列運算出的結果不同。其關鍵在于特定字符串的選擇,構建一個隨機度高且具有唯一性的字符串作為密碼鹽,可以有效降低被針對固定散列值的彩虹表攻擊的命中率。

為了確保密碼鹽的隨機性和唯一性,設計如下算法:

(1)首先自定義一個可選擇字符串集合,然后通過str_shuffle()函數隨機打亂集合中的字符串順序。

(2)從打亂順序的字符串集合中選取一個隨機的起始位置,截取一段字符串出來作為密碼鹽前綴。隨機位置通過mt_rand()函數實現,截取子串通過substr()函數實現。mt_rand()函數使用Mersenne Twister 算法作為隨機數發生器返回隨機整數,它產生隨機數值的平均速度比作為rand()隨機數發生器的libc 快四倍。

(3)將一個固定常量字符串和時間戳進行字符串連接,并對這個字符串通過uniqid()函數生成唯一ID。

圖1:模塊類圖

圖2:模塊時序圖

(4)將密碼鹽前綴和ID 進行字符串拼接,并通過散列加密函數進行加密,此時生成的加密字符串就是密碼鹽。

(5)將密碼鹽作為單獨的字段存入用戶賬號數據表中,用戶密碼則由密碼鹽和用戶名真實密碼按一定規則組合,然后通過散列加密函數進行加密后再存儲。

(6)密碼驗證時,按照同樣的規則對用戶提交的密碼先進行組合、散列,再與數據表中的用戶密碼進行比對。

密碼鹽的程序實現如下:

5 結束語

為提升用戶驗證模塊的安全性能,本文基于PDO 接口,使用MVC 模式和面向對象方法設計了一個用戶驗證模塊,實現了單例模式的數據庫管理類,在業務流程中,驗證碼由服務器端生成及驗證。同時,基于密碼鹽的方式來進行密碼存儲和驗證,并提供了一種生成密碼鹽的生成算法,通過提升隨機度和唯一性來增強密碼安全。

猜你喜歡
數據庫用戶
數據庫
財經(2017年15期)2017-07-03 22:40:49
數據庫
財經(2017年2期)2017-03-10 14:35:35
關注用戶
商用汽車(2016年11期)2016-12-19 01:20:16
關注用戶
商用汽車(2016年6期)2016-06-29 09:18:54
數據庫
財經(2016年15期)2016-06-03 07:38:02
關注用戶
商用汽車(2016年4期)2016-05-09 01:23:12
數據庫
財經(2016年3期)2016-03-07 07:44:46
數據庫
財經(2016年6期)2016-02-24 07:41:51
Camera360:拍出5億用戶
創業家(2015年10期)2015-02-27 07:55:08
100萬用戶
創業家(2015年10期)2015-02-27 07:54:39
主站蜘蛛池模板: 国产三级视频网站| 国产AV无码专区亚洲A∨毛片| 香蕉伊思人视频| 中文字幕在线日本| 日韩毛片在线视频| 97国产在线视频| 日本黄色a视频| 日韩小视频网站hq| 成年人国产网站| 亚洲天堂在线视频| 日韩高清欧美| m男亚洲一区中文字幕| 国产无码精品在线| 尤物精品国产福利网站| 亚洲无码久久久久| 人妻无码中文字幕第一区| 日本爱爱精品一区二区| a毛片在线播放| 色哟哟国产精品| 91精品国产综合久久不国产大片 | 丁香六月综合网| 国产精品妖精视频| 中文字幕伦视频| 国产在线观看第二页| 欧美一级在线| 日韩精品一区二区三区免费在线观看| 欧美国产在线看| 亚洲αv毛片| 再看日本中文字幕在线观看| 日本久久网站| 美女扒开下面流白浆在线试听| 亚洲天堂精品视频| 99久久这里只精品麻豆| 综合色88| 三级视频中文字幕| 免费不卡视频| 色噜噜在线观看| 国产aaaaa一级毛片| 一区二区三区高清视频国产女人| 国产精品美女网站| 亚洲无线观看| 久久久久久久97| 一级爆乳无码av| 熟女日韩精品2区| 欧美成a人片在线观看| 日本国产一区在线观看| 色老头综合网| 福利一区三区| 这里只有精品在线| 尤物在线观看乱码| 亚洲国产精品成人久久综合影院| 亚洲AV电影不卡在线观看| 伊人婷婷色香五月综合缴缴情| 免费视频在线2021入口| 国产精品专区第一页在线观看| 色天天综合| 日本伊人色综合网| 色国产视频| 香蕉eeww99国产精选播放| 国产一二视频| 国产第八页| 日韩av资源在线| 在线观看国产黄色| 91视频区| 亚洲欧美日本国产专区一区| 亚洲日韩欧美在线观看| 99热最新网址| 国产无吗一区二区三区在线欢| 亚洲无码高清一区二区| 国产噜噜噜| 亚洲人成影院午夜网站| 国产成人欧美| 青青青亚洲精品国产| 午夜激情婷婷| a亚洲天堂| 一级毛片在线免费视频| 91久久大香线蕉| 亚洲热线99精品视频| 午夜欧美在线| 99这里只有精品免费视频| 欧美精品v日韩精品v国产精品| 久久精品国产免费观看频道|