1

フラスコを使用して、Cookieが改ざんされていないことを確認しようとしています。現在、Cookieの値を変更するとエラーが発生しますが、コードis_valid(session ['user_id'])で確認し、そうでない場合はリダイレクト/リセットしたいと考えています。

#pocooの誰かが言う:

  • 実際には、SecureCookie.unserializeを呼び出して、例外をキャッチできます。
  • ああ、それは静かに失敗します
  • シリアル化を解除して、空のオブジェクトを取得するかどうかを確認する必要があるようです

誰かがこのコードがどのように見えるかをさらに説明できますか?

4

1 に答える 1

1

https://github.com/mitsuhiko/werkzeug/blob/master/werkzeug/contrib/securecookie.py#L265を見てください

safe_str_cmp(client_hash, mac.digest())Cookieが改ざんされた場合に失敗するはずのチェックを実行しています。

正確にキャッチしたいものに応じて、さまざまな場所にジャンプすることができます。あなたができる

data = request.cookies.get("session")
cookie = werkzeug.contrib.securecookie.SecureCookie.unserialize(data, secret_key)

データが存在する場合datacookie含まれていない場合、逆シリアル化は失敗しました。多くの理由の1つは、safe_str_cmp()(呼び出されてunserialize())Falseを返したことです。

于 2012-05-25T16:03:59.853 に答える