Heim  >  Artikel  >  Backend-Entwicklung  >  Eine Erklärung des sicheren Cookie-Mechanismus von Tornado in Python

Eine Erklärung des sicheren Cookie-Mechanismus von Tornado in Python

不言
不言nach vorne
2018-10-19 17:27:372416Durchsuche

Dieser Artikel bietet Ihnen eine Erklärung des sicheren Tornado-Cookie-Mechanismus in Python. Ich hoffe, dass er für Freunde hilfreich ist.

Cookies sind Daten, die von vielen Websites im lokalen Terminal des Benutzers (Client-Seite) gespeichert werden, um die Identität des Benutzers mithilfe von RequestHandler.get_cookie() und RequestHandler.set_cookie() in Tornado leicht identifizieren zu können und Kekse schreiben.

Beispiel: Einfaches Lesen und Schreiben von Cookies

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()

In diesem Beispiel wird die Funktion get_cookie() verwendet, um zu bestimmen, ob der Cookie-Name [Sitzung] existiert, und Wenn es nicht existiert, weisen Sie ihm eine neue Sitzungs-ID zu.

In praktischen Anwendungen werden Cookies häufig verwendet, um Sitzungsinformationen wie in diesem Beispiel zu speichern.
Da Cookies immer auf der Clientseite gespeichert werden, ist es ein Problem, wie man sie vor Manipulation schützt, das serverseitige Programm lösen muss.
Tornado bietet einen Informationsverschlüsselungsmechanismus für Cookies, der es dem Client unmöglich macht, den Schlüsselwert von Cookies nach Belieben zu analysieren und zu ändern.

Beispiel: Sicheres Cookie

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()

Wenn Sie das einfache Cookie-Beispiel oben vergleichen, können Sie den Unterschied feststellen:

  • Der Parameter cookie_secret wird zugewiesen, wenn das tornado.web.Application-Objekt initialisiert wird. Der Wert dieses Parameters ist eine Zeichenfolge, die zum Speichern des Schlüssels beim Verschlüsseln von Cookies auf dieser Website verwendet wird.

  • Verwenden Sie RequestHandler.get_secure_cookie anstelle des ursprünglichen RequestHandler.get_cookie-Aufrufs, bei dem Cookies gelesen werden müssen.

  • Ersetzen Sie den ursprünglichen RequestHandler.set_cookie-Aufruf durch RequestHandler.set_secure_cookie, wo Cookie geschrieben werden muss.

Auf diese Weise ist dies nicht der Fall Ich muss mir Sorgen machen Cookie Das Problem der Fälschung ist gelöst, aber der Wert des Parameters cookie_secret als Verschlüsselungsschlüssel muss gut geschützt sein und darf nicht durchgesickert sein.

Das obige ist der detaillierte Inhalt vonEine Erklärung des sicheren Cookie-Mechanismus von Tornado in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:segmentfault.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen