CSRF対策という名のもとに…2

Date 2006-06-01 04:16:00 | Category: XOOPS

in englishin japanese
昨日はPHP全般の話題でしたが、今回はXOOPSだけの話。それも、XOOPSだけに実装されていると思われる、簡易CSRF対策についてです。

さすがにこれについては、情報も共有されているので今さら説明するまでもないのですが、DBレイヤーにおいて、POSTかつRefererが内部でなければ、SELECT以外のSQL発行をスキップする、というものです。

これ自体は、なかなか面白い発想です。DBレイヤーに手を入れるだけで、「CSRF対策」が出来てしまうので、「とりあえず」の対策としては最善策だったでしょう。(このあたり、さすがはJM2さんという気がします)

しかし、開発チームからJM2さんが抜けて、XOOPS2になっても、その「とりあえず」の対策から何一つ改善されなかったことは明らかに問題です。

例えばXOOPSのnewsモジュールで投稿したとしましょう。その時、なんらかの理由で、リファラー送信をOFFにしていたら、「投稿されました」というメッセージだけが出て、実際には投稿されていません。これはとても奇妙な動作です。そして、どこに原因があるのか、きわめて判りづらいでしょう。

「リファラーが送信されていません」とだけメッセージを表示してexitしていれば、直ちに修正が可能なのに! そして(チケットチェックがない、もしくは、再投稿を実装してあれば)exitされた時点で、リファラーをONにしてリロードすることで、投稿内容も失わないのに!

トータルセキュリティという観点からも、SQL発行以外(例えばファイル処理)は普通に処理されてしまうのも問題です。おかしいと判断できたら、さっさとexitするのは鉄則です。

XOOPS CubeがXOOPSからフォークした理由の一つに、チケットシステムへの理解、というのがあったはずです。であるなら、チケットシステムを導入するだけでなく、「とりあえず」の簡易CSRF対策を外して欲しい、と思っているのは私だけでしょうか。




You can read more news at PEAK XOOPS.
http://xoops.peak.ne.jp

The URL for this story is:
http://xoops.peak.ne.jp/md/news/index.php?page=article&storyid=119