2011年02月05日

Tomcat7に変えるとDWRでCSRFエラー

2011年1月11日に tomcat7.0.6がリリースされており、

7系初の安定版ということで、気になっていた。

今回、ちょっと時間があったので試してみた。

http://journal.mycom.co.jp/news/2011/01/17/064/index.html

いくつか新機能があるみたいだが、

一番、惹かれたのはパフォーマンスの向上が見込まれることだった。

で、早速インストールして、Eclipseから起動しようと思ったら、SysdeoのTomcat Launcher pluginに7系がない。

http://www.eclipsetotale.com/tomcatPlugin.html#A3

チェックしたら、V33が出ていて対応しているようだ。良かった〜。

6.0.29で開発していたアプリケーションを起動すると何事もなく起動した。

お。トラブルなく適用できるのか?と期待してログイン処理をしてみたらエラー発生。。。

ERROR org.directwebremoting.dwrp.Batch - A request has been denied as a potential CSRF attack.

とか出ている。

CSRFって何か見たことあるなぁ。新機能にそれっぽいのを見た気がすると思って調べてみた。

http://d.hatena.ne.jp/c9katayama/20100715/1279162138

ふむ。要はサイト外からのリクエストによって不正な処理が行われてしまうことみたいね。

そしてなぜか、DWRがサイト外からのリクエストがあったと判断してしまったようだ。

なんでだろ?tomcat7がCSRFの対策でリクエストにトークンくっつけたりしてるのが悪いのだろうか?

これの対応策は、web.xmlの <servlet-name>dwr-invoker</servlet-name> に

<init-param>
  <param-name>crossDomainSessionSecurity</param-name>
  <param-value>false</param-value>
</init-param>

を追加して、クロスドメインを許可にすればOK。

ただし、この対策はセキュリティ上好ましくない。

でも、Tomcat7でCSRFのチェックしてるんだったら、DWRではOFFにしててもいいのかなぁ〜。
posted by hana at 12:50| Comment(0) | TrackBack(0) | Apache Software関連 | このブログの読者になる | 更新情報をチェックする