リクエストトークン

Contaoのリクエストトークンシステムは以下の様にして、フォームで提出した内容を検証します。

  1. フォームにREQUEST_TOKENというname属性を持つ隠し入力を含めます。
  2. HTTPクライアントはフォームを提出するときに1.の値も一緒に送ります。
  3. フォームを受け取った側は1.の隠し入力の値と2.の値が同一であることを確認します。

最初に1.で含めるREQUES_TOKENの隠し入力の値にランダムな値を使用することで、捏造したリクエストを困難とします。

<input type="hidden" name="REQUEST_TOKEN" value="6141fe67fac255b4e394642c38ed90eb">

不正なリクエストトークン

Contaoのリクエストトークンシステムで不正な検知とされるのは、HTTPのPOSTによるリクエストで以下の場合となります。

  • nameがREQUEST_TOKENの隠し入力が、提出したフォームに含まれていない場合
  • nameがREQUEST_TOKENの隠し入力の値が、発行したリクエストトークンの値のリストに含まれていない場合

Contao 2.10ではREQUEST_TOKENの値を一度検査に使用すると、それを発行したトークンを発行したリストから削除するので、不用意にブラウザーの戻るボタンを使用したりすると検知されることになります。

また、発行したリクエストトークンの値のリストはセッションに保存しているため、セッションの有効期限と合わせて無効になります。

Invalid Request