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.
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!