岩本隆史の日記帳(アーカイブ)

はてなダイアリーのサービス終了をうけて移行したものです。更新はしません。

Re: RESTとCSRF

ご無沙汰しております。artonさんの「RESTとCSRF」を読んで僕なりに考えたことを書きます。

お題:

  • 所定の遷移に従っていないクライアントには破壊的な操作をさせたくない
  • 破壊許可識別子をリクエストボディに含めたくない

artonさんの解は下記の通り「破壊許可識別子をURIに含める方式」でした。

いきなり、POST/PUT/PATCH/DELETEできるというAPIでは無く、最初は必ずクライアントからのGETで始まるとする。そして各操作をeditリレーションのリンクで示す。たとえばGETするのが/book/{id}なら、破壊メソッドのURIは、/book/{id}/{key} (keyが破壊許可の識別子)とかすれば良い

RESTとCSRF

僕も異論はありません。が、別解が浮かんだので記しておきます。破壊許可識別子をcookieに保存する方式です。

この方式であれば、artonさんが書かれている「でも、これってセッションIDをパスに埋め込むのと変わらないか」という点が気にならなくなります。URI方式よりステートフル性が増すわけでもありません。

どんなもんでしょうかね。