ワンタイムトークンについて

和田 (2024-01-17 16:36:52) www.synck.com

> 先日質問した通り下記で設定しているのに1分くらい経ったら送れるようになっている気がします。
> 下記の設定方法で不備等ありそうでしょうか?
ワンタイムトークンですが、これは
・フォームを開いた時にCGIからランダムなトークン(パスワードのようなもの)を発行してフォームにわたし、発行したトークンをサーバに記録しておく
・メール送信時にそのトークン(パスワードのようなもの)と一緒にCGIに送信内容を送る
・CGI側でトークンが存在するか、トークンが有効期限内か、をチェックして問題なければ送信する

というような処理を行っております。なんでこんなクソめんどくさいことをやっているかというと、「フォームを開かないとトークンが取得できない」という状況を作るためです。多くのボットはフォームを介さず直接mailformpro.cgiに攻撃を行ってきます。そのため、トークンを照会することで、フォームを介さない送信をすべて遮断することができる、という仕組みになっております。

トークンに有効期限が設定されているのは、過去に発行されたトークンを利用されることを防ぐためになります。トークンの有効期限が600秒(10分)の場合はフォームの入力を10分以内に収める必要があるため(フォームを開いてから10分経過するとトークンの有効期限が切れるため)、もう少し長めに有効期限をとってもよいかもしれません。

クソ長くて分かりづらい説明になってしまい申し訳ございません・・・。