Python中Tornado安全Cookie机制的讲解


本文摘自php中文网,作者不言,侵删。

本篇文章给大家带来的内容是关于Python中Tornado安全Cookie机制的讲解,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

Cookie是很多网站为了辨别用户的身份而存储在用户本地终端(Client Side)d的数据,在Tornado中使用RequestHandler.get_cookie()、RequestHandler.set_cookie()可以方便地对Cookie进行读写。

实例:Cookie的简单读写

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

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

代码:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

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机制的讲解的详细内容,更多文章请关注木庄网络博客!!

相关阅读 >>

Python中集合是什么?简单的集合操作

Python实现在两个字典中寻找相同点的方法(附代码)

Python中udp套接字通信的简单解析(附代码)

详解Python实现logger打印功能

Python 字典(dictionary)操作详解_Python

pycharm怎么用Python

Python实现求解最大公约数的方法

Python 匹配url中是否存在ip地址的方法

浅谈Python中requests模块导入的问题

举例说明Python中空格是属于字符

更多相关阅读请进入《Python》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...