Une explication du mécanisme de cookie sécurisé de Tornado en Python

不言
Libérer: 2018-10-19 17:27:37
avant
2415 Les gens l'ont consulté

Cet article vous apporte une explication du mécanisme de cookie sécurisé Tornado en Python. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il vous sera utile.

Les cookies sont des données stockées dans le terminal local de l'utilisateur (côté client) par de nombreux sites Web afin d'identifier l'identité de l'utilisateur. L'utilisation de RequestHandler.get_cookie() et RequestHandler.set_cookie() dans Tornado peut être facilement lue. et écrivez des cookies.

Exemple : Lecture et écriture simple de 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()
Copier après la connexion

Dans cet exemple, la fonction get_cookie() est utilisée pour déterminer si le nom du Cookie [session] existe , et s'il n'existe pas, alors il donne un nouveau session_id.

Dans les applications pratiques, les cookies sont souvent utilisés pour enregistrer les informations de session comme cet exemple.
Étant donné que les cookies sont toujours enregistrés côté client, comment les empêcher d'être falsifiés est un problème que le programme côté serveur doit résoudre.
Tornado fournit un mécanisme de cryptage des informations pour Cookie, empêchant le client d'analyser et de modifier la valeur clé de Cookie à volonté.

Exemple : Cookie sécurisé

Code :

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()
Copier après la connexion

En comparant l'exemple simple de Cookie ci-dessus, vous pouvez trouver la différence :

  • Donnez le paramètre cookie_secret lorsque l'objet tornado.web.Application est initialisé. La valeur du paramètre est une chaîne utilisée pour enregistrer la clé pour le cryptage des cookies sur ce site Web.

  • Utilisez RequestHandler.get_secure_cookie au lieu de l'appel RequestHandler.get_cookie d'origine où les cookies doivent être lus.

  • Remplacez l'appel RequestHandler.set_cookie d'origine par RequestHandler.set_secure_cookie où Cookie doit être écrit,

De cette façon, vous ne le faites pas besoin de s'inquiéter des cookies Le problème de la contrefaçon est résolu, mais la valeur du paramètre cookie_secret, en tant que clé de cryptage, doit être bien protégée et ne peut pas être divulguée.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:segmentfault.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!