リクエストトークン
Contaoのリクエストトークンシステムは以下の様にして、フォームで提出した内容を検証します。
- フォームにREQUEST_TOKENというname属性を持つ隠し入力を含めます。
- HTTPクライアントはフォームを提出するときに1.の値も一緒に送ります。
- フォームを受け取った側は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の値を一度検査に使用すると、それを発行したトークンを発行したリストから削除するので、不用意にブラウザーの戻るボタンを使用したりすると検知されることになります。
また、発行したリクエストトークンの値のリストはセッションに保存しているため、セッションの有効期限と合わせて無効になります。
