成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

一種低成本的找回密碼token驗證方案

FrozenMap / 1041人閱讀

摘要:的特點主要有如下幾個唯一性時效性不可預測很多大型業(yè)務中,比如說的找回密碼流程中,對于發(fā)給用戶的找回密碼鏈接郵件需要同時提交用戶輸入的驗證碼和也就是該校驗碼對應的。

隨著互聯(lián)網(wǎng)的高速發(fā)展,WEB2.0網(wǎng)站的業(yè)務越來越龐大,一些token驗證在許多場景下都必不可少,比如說交易訂單的防止多次提交,重要的敏感操作防止CSRF(跨站請求偽造)攻擊,以及短信驗證碼,找回密碼驗證碼,注冊登錄圖形的生成和驗證。
token的特點主要有如下幾個:

唯一性

時效性

不可預測

很多大型業(yè)務中,比如說BAT的找回密碼流程中,對于發(fā)給用戶的找回密碼鏈接郵件需要同時提交用戶輸入的vcode驗證碼和vcode_md5也就是該校驗碼對應的token。很多人認為這時需要一個緩存中間件比如說Redis或者Memcache來存儲校驗碼對應的需要重置密碼的用戶Uid。其實大可不必如此。

我們可以在服務器端使用rand()生成隨機數(shù),然后將生成的隨機數(shù)加上指定的salt做md5處理,比如說

function vcode($uid) {
    $output["vcode_timestamp"] = time();
    $output["vcode"] = $uid;
    $output["vcode_md5"] = md5("changwei"+vcode_timestamp+$uid);
    return $output;
}

生成的時候?qū)code和vcode_md5一起通過郵件發(fā)回給客戶。

那么驗證的時候該怎么驗證呢?很好辦,把指定的鹽值加上校驗碼以及其他附帶信息(比如說用戶UID)進行md5運算,和客戶端提交的那個事先發(fā)給客戶端的vcode_md5進行比較,如果一致那么就通過。

那么我們來看看這是否具有token的幾個特點呢?首先,唯一性,可以通過uid(這個一般是用戶表的遞增主鍵,不會重復),并且將當前時間戳作為隨機數(shù)種子,基本上可以認為是高度隨機的數(shù)字了,加上md5加鹽運算之后客戶有視為高度近似的唯一性了。不可預測性呢?由于指定的salt是存儲在服務端,只要這個salt足夠復雜而且沒有被泄漏,那么這個vcode_md5肯定是無法被客戶端預測的,也保證了這個方案的安全性。

最后就是時效性了,很多人總在糾結(jié),如果沒有Redis或Memcache,那么如何去存儲他的時效性呢?通過cookie嗎?不行,cookie是在客戶端的,那么意味著是用戶可控的,不安全。用session呢?標題寫了是低成本解決方案,session存儲在服務端,在高并發(fā)請求數(shù)量龐大的大型網(wǎng)站中,每時每刻都有成千上萬的校驗碼生成,如果都存在session對于服務器壓力(尤其是IO)是十分大的。那么還有什么辦法呢?我們想想,既然md5是消息摘要算法,那么他就可以用來驗證數(shù)據(jù)在傳輸中途是否經(jīng)過了篡改,那么思路就來了,我們在發(fā)回給用戶的表單中再加一個隱藏域,名字為vcode_timestamp,后端算法再改一改,這次提供完整的驗證算法源代碼。

function vcode($uid) {
    $output["vcode_timestamp"] = time();
    $output["vcode"] = $uid;
    $output["vcode_md5"] = md5("changwei"+vcode_timestamp+$uid);
    return $output;
}
function verify() {
    if(md5("changwei"+$_POST["vcode_timestamp"]+$_POST["uid"])===$_POST["vcode_md5"]) {
        if(time()

這樣一來時效性也可以驗證了,全過程沒有涉及到任何服務器端的存儲引擎,可以說是把成本降到了最低。而且md5本身也是目前效率非常高的hash算法,對于cpu的消耗也不是很大。

目前我的網(wǎng)站lol.changwei.me

中取消監(jiān)控鏈接便用的是該方案,經(jīng)過上線一個月的測試,基本上沒有出現(xiàn)什么BUG。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/64951.html

相關(guān)文章

  • 種低成本找回密碼token驗證方案

    摘要:的特點主要有如下幾個唯一性時效性不可預測很多大型業(yè)務中,比如說的找回密碼流程中,對于發(fā)給用戶的找回密碼鏈接郵件需要同時提交用戶輸入的驗證碼和也就是該校驗碼對應的。 隨著互聯(lián)網(wǎng)的高速發(fā)展,WEB2.0網(wǎng)站的業(yè)務越來越龐大,一些token驗證在許多場景下都必不可少,比如說交易訂單的防止多次提交,重要的敏感操作防止CSRF(跨站請求偽造)攻擊,以及短信驗證碼,找回密碼驗證碼,注冊登錄圖形的生...

    lakeside 評論0 收藏0
  • GitChat · 安全 | 聊聊 「密碼找回

    摘要:微信任意用戶密碼修改漏洞漏洞描述在微信官方的首頁上發(fā)現(xiàn)了找回密碼功能。選擇通過手機號碼找回密碼。提交成功,輸入新密碼。網(wǎng)易郵箱可直接修改其他用戶密碼描述這次我們看一個郵箱的找回密碼漏洞,這個還真和上面的方式有點不一樣。 來自 GitChat 作者:湯青松更多使用技術(shù),盡在微信公眾號:GitChat技術(shù)雜談 進入 GitChat 閱讀原文 WEB安全用戶密碼找回多案例安全攻防實戰(zhàn) 這次文...

    YorkChen 評論0 收藏0
  • 安全開發(fā)筆記

    摘要:登錄注冊安全風險登錄注冊的風險點主要有四個暴力破解撞庫遍歷注冊用戶批量注冊。引入了驗證碼機制同樣引入了額外的安全風險,比如短信驗證碼的短信炸彈風險圖形驗證碼的可繞過可識別等。 概述 很多技術(shù)研發(fā)不了解安全,也不重視安全,只有在自己的服務器被黑掉、被掛馬、被脫褲才想起關(guān)注安全,但是這個時候,技術(shù)架構(gòu)已經(jīng)成型、代碼已經(jīng)在線上穩(wěn)定運行,再亡羊補牢,改代碼、改策略,往往成本巨大、確收效很低。所...

    Cruise_Chan 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<