さっそくバグが見つかる

昔から使われている、Webサーバー上に Perl で作られた申請の仕組みで、先日修正した際に見逃していたバグを発見しました。

データをファイルに書き込む際、何もチェックしていなかったので、危ないな、とは思っていたのですが、やはり誤動作の元でした。

このWebの仕組み、手抜きもいいところだったので、一つ前の画面に戻ると、何度も申請できてしまいます。午前中に申請したのにそれを忘れて、そのままにしていた画面から、午後に同じ申請をすると、申請できてしまう仕様でした。

先日、同じ申請の場合は、登録しないように改造したばかりでしたが、日付が変わると二重にはならず、別のデータとして登録されてしまうバグが残っていました。

この仕組み、申請できる時間が決まっていて、休日はもちろん申請できません。
ログイン時にその辺をチェックしてて、はじくようにしてあるのですが、画面を残しておくことは想定していません。クッキーでログインしてからの時間制限とか付ければ問題ないのでしょうが、当然そういう作りにはなっていません。
正直言うと、perl でクッキーを実装する方法が解らず、あきらめました。
(PHP なら簡単なんですがね…)

締め切り時間を過ぎてから申請されると手続き上混乱の元だし、休日は対応できる職員がいないので、申請されても困ります。今回、データを登録する際に、その辺をチェックして登録しないではじくようにしました。

申請データをチェックする仕様を考えたときに、システムの想定外の行動をされたら、不許可にする発想ができなかったのは残念です。システムがどう使われるか、に基づく条件分岐は検討したのですが、発想の転換ができませんでした。

私は、以前からこういうのが苦手なんですよね。ゲームとかやっていても、作戦が素直すぎとか言われたこともありました。まあ、早めに気付けてよかったかもしれません。