この記事では、Python での Tornado セキュリティ Cookie メカニズムについて説明します。一定の参考値があります。困っている友人は参照してください。お役に立てれば幸いです。
Cookie は、ユーザーの身元を識別するために多くの Web サイトによってユーザーのローカル端末 (クライアント側) に保存されるデータです。Tornado の RequestHandler.get_cookie() と RequestHandler.set_cookie() を使用すると、簡単に読み取ることができます。そしてクッキーを書き込みます。
例: 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()
この例では、get_cookie() 関数を使用して、Cookie 名 [セッション] が存在するかどうかを判断します。 New session_id.
実際のアプリケーションでは、この例のようにセッション情報を保存するために Cookie がよく使用されます。
Cookie は常にクライアント側に保存されるため、改ざんされないように保存する方法はサーバー側のプログラムで解決する必要があります。
Tornado は Cookie の情報暗号化メカニズムを提供し、クライアントが Cookie のキー値を自由に解析および変更することを不可能にします。
コード:
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 の例を比較すると、違いがわかります:
cookie_secret パラメータは、tornado.web.Application オブジェクトの初期化時に割り当てられ、このパラメータの値は、この Web サイトの Cookie を暗号化するために使用されるキーを保存するために使用される文字列です。
Cookie を読み取る必要がある場合は、元の RequestHandler.get_cookie 呼び出しの代わりに RequestHandler.get_secure_cookie を使用します。
元の RequestHandler.set_cookie 呼び出しを、Cookie を書き込む必要がある RequestHandler.set_secure_cookie に置き換えます。 Cookie について心配する必要があります。偽造の問題は解決されましたが、暗号化キーとしての cookie_secret パラメータ値は十分に保護され、漏洩されないようにする必要があります。
以上がPython での Tornado のセキュア Cookie メカニズムの説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。