最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

php對(duì)用戶(hù)密碼進(jìn)行加密技巧實(shí)例

 更新時(shí)間:2023年12月18日 14:07:10   作者:enjolras1205  
這篇文章主要為大家介紹了php對(duì)用戶(hù)密碼進(jìn)行加密技巧實(shí)例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

摘要

密碼驗(yàn)證是很常見(jiàn)的需求,如何在實(shí)現(xiàn)功能之余,防止用戶(hù)密碼泄露,已經(jīng)有了很成熟的方案。這篇文章把自己的思考和結(jié)論做一下記錄。

對(duì)用戶(hù)密碼進(jìn)行加密時(shí)需要做到:

防止用戶(hù)密碼明文被竊聽(tīng)

1.交給https,明文傳輸。

2.客戶(hù)端將密碼加鹽(鹽隨機(jī)生成、具有強(qiáng)度)并哈希。服務(wù)端再次加鹽哈希并對(duì)比。假設(shè)https被竊聽(tīng),攻擊者破解密碼明文也具有相當(dāng)難度。

防止數(shù)據(jù)庫(kù)被攻破時(shí),用戶(hù)密碼明文被竊取。

1.增加哈希算法強(qiáng)度。

2.隨機(jī)生成具有強(qiáng)度的鹽。

一些思考

哈希算法是不可逆的。攻擊者可以生成海量的密碼 -> 哈希值鍵值對(duì),反向映射,有概率通過(guò)哈希值得到密碼。
故,破解的成本=哈希算法強(qiáng)度×鹽值數(shù)量。

如何選擇哈希算法強(qiáng)度

  • 計(jì)算耗時(shí)用戶(hù)可接受(視應(yīng)用場(chǎng)景,如0.2S內(nèi))。
  • 計(jì)算耗時(shí)盡量長(zhǎng),即增加哈希算法強(qiáng)度。

為什么鹽要隨機(jī)

如果鹽不隨機(jī),攻擊者可以針對(duì)單個(gè)鹽生成哈希值->密碼鍵值對(duì),再對(duì)整個(gè)數(shù)據(jù)庫(kù)的哈希值做匹配。
假設(shè)鹽是保密的,鹽可能因?yàn)楦鞣N原因被攻擊者獲?。ùa泄漏、社會(huì)工程學(xué)等等)。
攻擊者也可以通過(guò)在數(shù)據(jù)庫(kù)被攻破的網(wǎng)站上注冊(cè)用戶(hù),通過(guò) 哈希值->攻擊者密碼+鹽 來(lái)破解鹽。

為什么鹽要有強(qiáng)度

如果鹽的強(qiáng)度(長(zhǎng)度)不夠。攻擊者可以建立多個(gè) 哈希值->密碼 數(shù)據(jù)庫(kù),簡(jiǎn)單鹽被匹配(攻破)的概率更高。

為什么鹽可以明文存儲(chǔ)

攻擊者很難有足夠的計(jì)算資源和存儲(chǔ)空間建立海量的 哈希值->密碼 數(shù)據(jù)庫(kù),針對(duì)單條用戶(hù)記錄,建立 哈希值->密碼 數(shù)據(jù)庫(kù)進(jìn)行攻擊的成本過(guò)高。

php的實(shí)現(xiàn)

最初的想法

需求是房間密碼,出于簡(jiǎn)單考慮,我最初的想法是,MD5+隨機(jī)鹽。
在數(shù)據(jù)庫(kù)里大致是這樣:

+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| uid  | int(11)    | NO  | PRI | NULL    |      |
| pwd  | varchar(45) | YES  |    | NULL    |      |
| salt  | varchar(45) | YES  |    | NULL    |      |
+-------+-------------+------+-----+---------+-------+

php的推薦實(shí)現(xiàn)

php的md5文檔

http://php.net/manual/zh/func...

給了一個(gè)很好的指引:
 

http://php.net/manual/zh/faq....

password_hash 和 crypt 函數(shù)返回值的組成部分,依次為:所選擇的算法,算法選項(xiàng),所使用的“鹽”,以及散列后的密碼。
更改后、數(shù)據(jù)庫(kù)表變?yōu)椋?/p>

+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| uid  | int(11)    | NO  | PRI | NULL    |      |
| pwd  | varchar(255) | YES  |    | NULL    |      |
+-------+-------------+------+-----+---------+-------+

相較之前的方案:
1.記錄了采用的算法(可以在不改動(dòng)代碼的情況下升級(jí)算法)
2.記錄了采用算法的cost(強(qiáng)度),可以在硬件計(jì)算能力上升的情況下,調(diào)整cost來(lái)維持安全性。
3.鹽和哈希值一并返回,簡(jiǎn)化了接口調(diào)用、數(shù)據(jù)庫(kù)存儲(chǔ)。
php的驗(yàn)證接口設(shè)計(jì)得相當(dāng)漂亮。
使用簡(jiǎn)單,強(qiáng)制調(diào)用者使用隨機(jī)的salt(不容易誤用),可在不修改代碼的情況下拓展算法強(qiáng)度。
代碼:

if (!empty($xxxx_info['pwd'])) {    // 若原來(lái)有密碼,則要檢測(cè)
    if (!password_verify($old_pwd, $xxxx_info['pwd'])) {
        // 用戶(hù)名或密碼錯(cuò)
        return;
    }
}
// 對(duì)密碼長(zhǎng)度、內(nèi)容等不做限制。
// 以應(yīng)用場(chǎng)景來(lái)說(shuō),123456之類(lèi)也無(wú)所謂。
$pwd_in_db = password_hash($new_pwd, PASSWORD_DEFAULT, array("cost" => 6));

參考 

https://www.php.net/manual/zh/faq.passwords.php#faq.passwords.fasthash

http://www.fzitv.net/article/116492.htm

以上就是php對(duì)用戶(hù)密碼進(jìn)行加密技巧實(shí)例的詳細(xì)內(nèi)容,更多關(guān)于php用戶(hù)密碼加密的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • PHP curl偽造IP地址和header信息代碼實(shí)例

    PHP curl偽造IP地址和header信息代碼實(shí)例

    這篇文章主要介紹了PHP curl偽造IP地址和header信息代碼實(shí)例,本文給出服務(wù)器端和客戶(hù)端實(shí)現(xiàn)代碼,提供偽造功能和服務(wù)器端檢測(cè)代碼,需要的朋友可以參考下
    2015-04-04
  • ThinkPHP之foreach標(biāo)簽使用概述

    ThinkPHP之foreach標(biāo)簽使用概述

    這篇文章主要介紹了ThinkPHP之foreach標(biāo)簽的使用,需要的朋友可以參考下
    2014-06-06
  • 詳解PHP中strlen和mb_strlen函數(shù)的區(qū)別

    詳解PHP中strlen和mb_strlen函數(shù)的區(qū)別

    在PHP中,strlen與mb_strlen是求字符串長(zhǎng)度的函數(shù),但是對(duì)于一些初學(xué)者來(lái)說(shuō),如果不看手冊(cè),也許不太清楚其中的區(qū)別
    2014-03-03
  • php實(shí)現(xiàn)文件下載功能的幾個(gè)代碼分享

    php實(shí)現(xiàn)文件下載功能的幾個(gè)代碼分享

    我們一般實(shí)現(xiàn)下載都是調(diào)用url來(lái)下載,但是遇到ie能識(shí)別打開(kāi)的文件就不能用這種方式了,比如下載一個(gè)圖片、html網(wǎng)頁(yè)等,這時(shí)就需要編程來(lái)實(shí)現(xiàn)
    2014-05-05
  • Laravel 實(shí)現(xiàn)關(guān)系模型取出需要的字段

    Laravel 實(shí)現(xiàn)關(guān)系模型取出需要的字段

    今天小編就為大家分享一篇Laravel 實(shí)現(xiàn)關(guān)系模型取出需要的字段,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-10-10
  • PHP之使用swoole統(tǒng)計(jì)在線(xiàn)人數(shù)和ID案例講解

    PHP之使用swoole統(tǒng)計(jì)在線(xiàn)人數(shù)和ID案例講解

    這篇文章主要介紹了PHP之使用swoole統(tǒng)計(jì)在線(xiàn)人數(shù)和ID案例講解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • 學(xué)習(xí)php中的正則表達(dá)式

    學(xué)習(xí)php中的正則表達(dá)式

    簡(jiǎn)單的說(shuō),正則表達(dá)式是一種可以用于模式匹配和替換的強(qiáng)有力的工具。我們可以在幾乎所有的基于UNIX系統(tǒng)的工具中找到ta的身影。此外,象JavaScript這種客戶(hù)端的腳本語(yǔ)言也提供了支持。正則表達(dá)式已經(jīng)超出了某種語(yǔ)言或某個(gè)系統(tǒng)的局限,成為人們廣為接受的概念和功能。
    2014-08-08
  • 實(shí)現(xiàn)laravel 插入操作日志到數(shù)據(jù)庫(kù)的方法

    實(shí)現(xiàn)laravel 插入操作日志到數(shù)據(jù)庫(kù)的方法

    今天小編就為大家分享一篇實(shí)現(xiàn)laravel 插入操作日志到數(shù)據(jù)庫(kù)的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-10-10
  • php7函數(shù),聲明,返回值等新特性介紹

    php7函數(shù),聲明,返回值等新特性介紹

    這篇文章主要介紹了php7函數(shù),聲明,返回值等新特性,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-05-05
  • Laravel 4.2 中隊(duì)列服務(wù)(queue)使用感受

    Laravel 4.2 中隊(duì)列服務(wù)(queue)使用感受

    Laravel的隊(duì)列組件為許多隊(duì)列服務(wù)提供了統(tǒng)一的API接口。隊(duì)列服務(wù)讓你可以異步處理一個(gè)耗時(shí)任務(wù),比如延遲發(fā)送一封郵件,從而大大加快了應(yīng)用的Web請(qǐng)求處理速度。
    2014-10-10

最新評(píng)論

潮州市| 西和县| 湛江市| 澳门| 文山县| 会泽县| 个旧市| 锦屏县| 来凤县| 东至县| 长丰县| 报价| 通海县| 大田县| 盱眙县| 富蕴县| 昆明市| 兴城市| 阿坝县| 达拉特旗| 乃东县| 珲春市| 岫岩| 静安区| 龙门县| 安塞县| 白城市| 德庆县| 改则县| 河北省| 上杭县| 项城市| 惠州市| 成都市| 仲巴县| 米脂县| 牟定县| 若尔盖县| 黔南| 酒泉市| 无极县|