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