セッションハイジャック対策について

151 views
Skip to first unread message

Delfino

unread,
Jan 25, 2011, 11:26:52 PM1/25/11
to jpmobile
はじめまして、Delfinoと申します。

trans_sid利用時のセッションハイジャック対策について質問させてください。
現在rails2.3.5、jpmobile0.0.7で構築されたWebアプリケーションのメンテナンスを行っているのですが、trans_sidを
利用した際にはcookieのセッションIDよりもHTTPパラメタのセッションIDが優先される為、cookie内のセッションIDかHTTPパラメ
タのセッションIDをHTTPパラメタとして利用することでセッションハイジャックが可能となってしまいます。
本来であれば、cookie非対応の携帯端末のみtrans_sidを利用する、あるいはキャリアのゲートウェイを確認する等で、よりきちんとした形の
対策が行えることは承知しておりますが、今回の業務要件でどちらも採用できなくなっており別の対策をとる必要があります。

そこで、uaが偽装可能なのは理解した上で、request.mobile?がFalseの時にはHTTPパラメタのセッションIDを利用しないように
jpmobileの動作を変更しようと考えております。
具体的には:
1.jpmobile/hook_request.rbのJpmobile::RequestWithMobileのinclude対象を
ActionController::RequestからRack::Requestに変更。(3行目)
2.jpmobile/trans_sid.rbの11行目をunless @cookie_onlyからif !@cookie_only &&
request.mobile?に変更。
以上の2箇所の変更で。(uaを偽装されていたなら意味はないですが)携帯端末以外のリクエストであれば、HTTPパラメタのセッションIDが優先して
使われることはなくなると思います。

この変更について2つ質問をさせてください。
1.jpmobile/hook_request.rbでRack::RequestではなくActionController::Requestに対
してメソッドを追加しているのには、何か理由がありますでしょうか。
2.簡単に破ることの出来る対策ではありますが、この様な対策が行われていないのには何か理由がありますでしょうか。

以上、よろしくお願いします。

Shin-ichiro OGAWA

unread,
Jan 26, 2011, 1:17:04 AM1/26/11
to jpmo...@googlegroups.com
小川です。

変更はそれで動作確認できているのであれば、問題ないと思います。
一応、ParamsOverCookie の include を外せば、Cookie対応端末ではCookieから見るようになります。

> 1.jpmobile/hook_request.rbでRack::RequestではなくActionController::Requestに対
> してメソッドを追加しているのには、何か理由がありますでしょうか。

特にありません。Rails 2.3系のjpmobileでは、基本的にActionControllerより後でしか
動かないものなので、Rack::Requestにする必然性も当時はありませんでした。

> 2.簡単に破ることの出来る対策ではありますが、この様な対策が行われていないのには何か理由がありますでしょうか。

trans_sid :alway があるため、携帯以外を排除するようには実装されていません。
状況に応じて、Delfinoさんのような対策を取ってもらう必要があります。

--------
小川 伸一郎 (Shin-ichiro OGAWA)
rust....@gmail.com
GPG ID 94B70E36 / 75360751
fingerprint: {C64E 9826 8A75 723E DE54 / 70A8 F623 220C 94B7 0E36}
http://stnard.jp/
http://twitter.com/conceal_rs/
http://iddy.jp/profile/rust/

2011/1/26 Delfino <azul.d...@gmail.com>:

> --
> このメールは Google グループのグループ「jpmobile」の登録者に送られています。
> このグループに投稿するには、jpmo...@googlegroups.com にメールを送信してください。
> このグループから退会するには、jpmobile+u...@googlegroups.com にメールを送信してください。
> 詳細については、http://groups.google.com/group/jpmobile?hl=ja からこのグループにアクセスしてください。
>
>

Delfino

unread,
Jan 26, 2011, 4:07:53 AM1/26/11
to jpmobile
Delfinoです。
小川さん、返信ありがとうございました。安心いたしました。
この方針で進めて行きたいと思います。

SSL通信時のDocomoのiモードID取得やauやSoftBankのcookieの問題等、SSLが関係してきたとたん課題が山済みです。
巷で言われているようにcookieに対応していないDocomo(iモードブラウザ2.0より前)だけiモードIDを使って、その他はcookie
で、というほど簡単なものではないですね。
これからもjpmobileにお世話になると思います。
本当にありがとうございました。
Reply all
Reply to author
Forward
0 new messages