1、前言
最近在做微信公眾號開發(fā)在進(jìn)行網(wǎng)頁授權(quán)時,微信需要用戶自己在授權(quán)url中帶上一個類似token的state的參數(shù),以防止跨站攻擊。
在經(jīng)過再三思考之后,自己試著實(shí)現(xiàn)一個產(chǎn)生token和驗(yàn)證token的方案。接下就把code貼出來。希望讀者指導(dǎo)一下。
2、產(chǎn)生token
原理:
通過hmac sha1 算法產(chǎn)生用戶給定的key和token的大過期時間戳的一個消息摘要,將這個消息摘要和大過期時間戳通過":"拼接起來,再進(jìn)行base64編碼,生成最終的token
實(shí)現(xiàn):
import time import base64 import hmac def generate_token(key, expire=3600): r''' @Args: key: str (用戶給定的key,需要用戶保存以便之后驗(yàn)證token,每次產(chǎn)生token時的key 都可以是同一個key) expire: int(大有效時間,單位為s) @Return: state: str ''' ts_str = str(time.time() + expire) ts_byte = ts_str.encode("utf-8") sha1_tshexstr = hmac.new(key.encode("utf-8"),ts_byte,'sha1').hexdigest() token = ts_str+':'+sha1_tshexstr b64_token = base64.urlsafe_b64encode(token.encode("utf-8")) return b64_token.decode("utf-8")
新聞標(biāo)題:python產(chǎn)生token及token驗(yàn)證的方法-創(chuàng)新互聯(lián)
網(wǎng)站地址:http://jinyejixie.com/article48/eijep.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、小程序開發(fā)、網(wǎng)站營銷、微信公眾號、電子商務(wù)、全網(wǎng)營銷推廣
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容