11.21 Cookie -- HTTPの状態管理

CookieモジュールはHTTPの状態管理機能であるcookieの概念を抽象 化、定義しているクラスです。単純な文字列のみで構成されるcookieのほか、 シリアル化可能なあらゆるデータ型でクッキーの値を保持するための機能も備 えています。

このモジュールは元々RFC 2109RFC 2068に定義されている構文解析の規 則を厳密に守っていました。しかし、MSIE 3.0xがこれらのRFCで定義された文 字の規則に従っていないことが判明したため、結局、やや厳密さを欠く構文 解析規則にせざるを得ませんでした。

exception CookieError
属性やSet-Cookie:ヘッダが正しくないなど、RFC 2109に合致してい ないときに発生する例外です。

クラス BaseCookie( [input])
このクラスはキーが文字列、値がMorselインスタンスで構成される辞書風オブジェ クトです。値に対するキーを設定するときは、値がキーと値を含む Morselに変換されることに注意してください。

inputが与えられたときは、そのままload()メソッドへ渡され ます。

クラス SimpleCookie( [input])
このクラスはBaseCookieの派生クラスで、value_decode() は与えられた値の正当性を確認するように、value_encode()str()で文字列化するようにそれぞれオーバライドします。

クラス SerialCookie( [input])
このクラスはBaseCookieの派生クラスで、value_decode()value_encode()をそれぞれpickle.loads()pickle.dumps()を実行するようにオーバーライドします。

リリース 2.3 で撤廃されました。 このクラスを使ってはいけません! 信頼できないcookieのデータか ら pickle 化された値を読み込むことは、あなたのサーバ上で任意のコードを 実行するために pickle 化した文字列の作成が可能であることを意味し、重大 なセキュリティホールとなります。

クラス SmartCookie( [input])
このクラスはBaseCookieの派生クラスで、value_decode() を、値が pickle 化されたデータとして正当なときは pickle.loads()を実行、そうでないときはその値自体を返すよう にオーバーライドします。またvalue_encode()を、値が文字列以外 のときはpickle.dumps()を実行、文字列のときはその値自体を返 すようにオーバーライドします。

リリース 2.3 で撤廃されました。 SerialCookieと同じセキュリティ上の注意が当ては まります。

関連して、さらなるセキュリティ上の注意があります。後方互換性のため、 CookieモジュールはCookieというクラス名を SmartCookieのエイリアスとしてエクスポートしています。これはほ ぼ確実に誤った措置であり、将来のバージョンでは削除することが適当と思わ れます。アプリケーションにおいてSerialCookieクラスを使うべきで ないのと同じ理由でCookieクラスを使うべきではありません。

参考:

cookielib:モジュール
Webクライアント向けの HTTP クッキー処理です。 cookielibCookieは互いに独立しています。.

RFC 2109, HTTP State Management Mechanism
このモジュールが実装 しているHTTPの状態管理に関する規格です。



ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。