Django中資料儲存,資料加密功能
阿新 • • 發佈:2018-11-06
1、cookie
1、會話技術
2、客戶端的會話技術(資料儲存在瀏覽器上
)
3、問題
導致原因:在web應用中,一次網路請求是從request開始,到response結束,跟以後的請求或者跟其他請求沒有關係
(導致每次請求之間的資料沒有關係(短連線、長連結))
解決:在客戶端保留資料(cookie)或者服務端保留資料(session)來建立關係
4、cookie的使用
1、存 格式:response.set_cookie(key,value) 例: response.set_cookie('username',username) response.set_cookie('password',password) 通過response通過瀏覽器要儲存key,value形式的cookie 2、取 如過瀏覽器保留了cookie,那麼每次請求該伺服器的時候,會自動的攜帶該cookie 格式:request.COOKIES.get(key) 例: username = request.COOKIES.get('username') password = request.COOKIES.get('password') 3、設定過期時間 預設情況下,關閉瀏覽器cookie就會過期,有時候我們需要設定過期時間 格式:response.set_cookie(key,value,expirse = 值) expires = 0 立馬過期 expires = None 永不過期 expires = 值 單位是秒 expires = timedelta(days = 值) 表示多少天后過期 (hours = 值) 表示多少小時候過期 例:response.set_cookie('password', password, expires=timedelta(seconds=2)) 4、刪除 格式:reponse.delete_cookie(key) 例:response.delete_cookie('password')
5、cookie的應用場景
1、儲存帳號,密碼
2、京東的購物車(不登入也可以新增到購物車)
3、保留使用者的瀏覽資訊...
2、session
1、 會話技術
2、服務端的會話技術
3、需要客戶端的支援才可以
4、使用
1、存 格式:request.session[key] = value 例:request.session['username']= username request.session['password']=password 注意:在django中儲存了一個session後,django會自動的生成session key,並將session key與資料自動的儲存到django_session表中,資料會自動的用base64編碼,並會自動讓瀏覽器的cookie儲存sessionid(就是session key) 2、取 格式:value = request.session.get(key) 例:username = request.session.get('username') password = request.session.get('password') 注意:在django中,會自動將cookie中的sessionid拿出來跟資料庫中的session key匹配,匹配成功後即可以獲取值 3、清除 1、清除對應的cookie 2、del request.session 推薦的3、request.session.flush() 會清除對應的cookie及session
3、MD5—資訊摘要—加密
md5可以將任何一個二進位制的資料通過數學演算法,轉換成一個一定長度(128位)的二進位制資料 特點:1、結果是唯一的,不可能重複 2、不可逆 作用:1、通常用來加密密碼 2、通常用來驗證一個數據的完整性 使用md5處理 建立一個md5物件 MD5 = hashlib.md5() 將一個二進位制資料進行md5處理,生成一個128位的二進位制資料 4位的二進位制是一位的十六進位制 MD5.update(password.encode('utf-8')) 將二進位制結果轉換成32位十六進位制的結果 password = MD5.hexdigest()
4、生成一個唯一性的字串
1、自己生成:
唯一的字串規則:時間戳 + 隨機數(很多位) + 公司的域名
mytoken = str(time.time()) + str(random.randint(100000,999999)) + 'www.baidu.com'
2、使用uuid模組
生成一個唯一的uuid
myuuid = uuid.uuid4()
5、編碼/解碼
編碼:將一個數據按照碼錶轉換成二進位制的形式 encode
解碼:將二進位制的資料轉換成可視形式的資料 decode
解碼的時候碼錶必須與編碼的碼錶一致
utf-8、gbk、base64
6、加密/解密
1、DES 對稱加密
加密的金鑰與解密的金鑰是同一個金鑰
2、RSA 非對稱加密
加密的金鑰(公鑰)與解密的金鑰(私鑰)不是同一個金鑰
3、md5/sha 資訊摘要
可以將任何一個二進位制的資料通過數學演算法,轉換成一個一定長度的二進位制資料,而該資料不可逆且唯一