您好,欢迎访问一九零五行业门户网

Python中Tornado安全Cookie机制的讲解

本篇文章给大家带来的内容是关于python中tornado安全cookie机制的讲解,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
cookie是很多网站为了辨别用户的身份而存储在用户本地终端(client side)d的数据,在tornado中使用requesthandler.get_cookie()、requesthandler.set_cookie()可以方便地对cookie进行读写。
实例:cookie的简单读写
import tornado.websession_id = 1class 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.websession_id = 1class 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机制的讲解的详细内容。
其它类似信息

推荐信息