首頁 >後端開發 >Python教學 >Python中Tornado安全Cookie機制的解說

Python中Tornado安全Cookie機制的解說

不言
不言轉載
2018-10-19 17:27:372438瀏覽

這篇文章帶給大家的內容是關於Python中Tornado安全Cookie機制的講解,有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

Cookie是許多網站為了辨別使用者的身分而儲存在使用者本機終端(Client Side)d的數據,在Tornado中使用RequestHandler.get_cookie()、RequestHandler.set_cookie()可以方便地對Cookie進行讀寫。

實例:Cookie的簡單讀寫

import tornado.web

session_id = 1
class MainHandler(tornado.web.RequestHandler):
    def get(self):
        global session_id
        if not self.get_cookie("session"):
            self.set_cookie("session",str(session_id))
            session_id+=1
            self.write("设置新的session")
        else:
            self.write("已经具有session")

if __name__ == '__main__':
    app=tornado.web.Application([
        ("/",MainHandler)
    ])
    app.listen("8888")
    tornado.ioloop.IOLoop.current().start()

本例中用get_cookie()函數判斷Cookie名稱【session】是否存在,如果不存在則為其賦予新的session_id.

在實際應用中,Cookie經常像本例這樣用於保存session資訊。
因為Cookie總是被保存在客戶端,所以如何保存其不被篡改是伺服器端程式必須解決的問題。
Tornado為Cookie提供了資訊加密機制,使得客戶端無法隨意解析和修改Cookie的鍵值。

實例:安全的Cookie

程式碼:

import tornado.web

session_id = 1
class MainHandler(tornado.web.RequestHandler):
    def get(self):
        global session_id
        #get_secure_cookie代替get_cookie
        if not self.get_secure_cookie("session"):
            #set_secure_cookie代替set_cookie
            self.set_secure_cookie("session",str(session_id))
            session_id+=1
            self.write("设置新的session")
        else:
            self.write("已经具有session")

if __name__ == '__main__':
    app=tornado.web.Application([
        ("/",MainHandler)
    ],cookie_secret="JIA_MI_MI_YAO")
    app.listen("8888")
    tornado.ioloop.IOLoop.current().start()

比較上面的簡單Cookie實例可以發現不同之處:

  • 在tornado.web.Application物件初始化時賦予cookie_secret參數,該參數值時一個字串,用於保存本網站Cookie加密時的金鑰。

  • 在需要讀取cookie的地方使用RequestHandler.get_secure_cookie取代原來的RequestHandler.get_cookie呼叫。

  • 在需要寫入Cookie的地方用RequestHandler.set_secure_cookie替換原來的RequestHandler.set_cookie調用,

這樣,就不需要擔心Cookie偽造的問題了,但是cookie_secret參數值作為加密金鑰,需要好好保護,不能外洩。

#

以上是Python中Tornado安全Cookie機制的解說的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:segmentfault.com。如有侵權,請聯絡admin@php.cn刪除