.ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録

.検索

.メインメニュー

.フォーラムメニュー

.オンライン状況
15 人のユーザが現在オンラインです。 (14 人のユーザが フォーラム を参照しています。)

登録ユーザ: 0
ゲスト: 15

もっと...

.
.リンク集

メイン
   一般的な話題(General)
     携帯のblackhole 対策
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
roy
投稿日時: 2009-5-9 13:15
Baker スタート
登録日: 2009-1-3
居住地: 名古屋
投稿: 15
携帯のblackhole 対策
お世話になります。
ROYと申します。

携帯サイトで、セキュリティーコンポーネントを使い tokenを出力しCSRFの
対策にしたいと思っているのですが、PCの場合と、携帯の場合で違う挙動をし
困っています。

入力フォームで「送信」ボタンをクリックすると
PCを使った場合は、blackholeに落ちることはないのですが、
携帯を使った場合は、blackholeに落ちてしまいます。

テストした携帯は、au
ソフトバンクのエミュレータを使用してみました。
どちらもNGでした。
ドコモのテストはまだしていません。

何か情報がございましたらご指導お願いします。
crays
投稿日時: 2009-5-11 10:16
Baker スタート
登録日: 2008-5-7
居住地: 大阪
投稿: 20
Re: 携帯のblackhole 対策
携帯は(一部の端末を除いて)クッキーを使えませんので、セッションIDが取得できない=セッション情報が取得できない=セッションに登録したはずのトークン値が取得できない となっているのではないでしょうか?

PHPはphp.ini上の「session.use_trans_sid」が1であれば、クッキーを使用できないブラウザ(端末)の場合は自動でAタグ等にセッションIDをGETパラメータとして付与してくれます。

以下を参考にされてはいかがでしょうか?
CakePHPとは関係ありませんが、PHPで携帯サイトを構築する上での参考になります。
http://ke-tai.org/blog/2007/12/12/php_session_new/

的外れでしたら、申し訳ございません。
iroha
投稿日時: 2009-9-5 21:46
Baker スタート
登録日: 2009-5-19
居住地:
投稿: 9
Re: 携帯のblackhole 対策
同じ問題にぶつかっています。
こちらは、Docomo, SoftBank, AUの実機で行い、
ROYさんと違い、AUのみでCSRFトークンチェックがエラーになります。

ROYさんのところでSoftBankがエラーになる理由は分かりませんが、
AUでの原因は分かりました。

Securityコンポーネントのセキュリティ・トークンは
<fieldset style="display:none"> のフィールドセット要素の
中に出力されますが、AU携帯は、display:noneの要素の中の
入力フォームの値を無視するのです。

参考)WizMobileでxpWikiの章単位編集で不具合
http://www.xugj.org/modules/d3forum/index.php?topic_id=634

Cakeのライブラリの
FormHelper::create(),
FormHelper::secure() (FormHelper::end()で呼ばれる)に
手を入れて、fieldsetの display:none の指定が行われないようにすると、
AUの実機、エミュレータともに、Securityコンポーネントの
CSRFトークンチェックを通るようになります。

しかし、display:noneの指定を外すと、画面にfieldsetが表示され、レイアウトが狂ってしまいます。
かと言って、CSRF対策をしないのも危険でしょう。

皆さんは、どのようにしたら良いとお考えになりますか?

--

最悪、FormHelper::create(), FormHelper::end() の出力するhidden要素を、
fieldset要素なしで出力するようにすれば、
すべてhiddenですから、画面レイアウトに影響はないかもしれません。

しかし、これもできたらやりたくない対処法です。
patorash
投稿日時: 2010-3-17 20:15
Baker スタート
登録日: 2008-2-16
居住地: 愛媛県
投稿: 11
Re: 携帯のblackhole 対策
同様の現象に当たりました。
下記、似たような内容なのでリンクを貼りますね。

$form->createで出力されるfieldsetを消す方法

このようにすると、Formヘルパーに手を入れることなく、解決できました

<?php
echo strip_tags($form->create($model$options), '<form><input>');
echo 
strip_tags($form->end($options), '<form><input>');
?>

hiromi2424
投稿日時: 2010-3-17 20:44
Baker 常連
登録日: 2009-11-23
居住地: 新潟
投稿: 58
Re: 携帯のblackhole 対策
http://github.com/cakephp/cakephp1x/commit/de7658e78bdd28c1fbbdf3f6f20f49cbf45860ba

他スレッドでも報告しましたが、fieldsetではなくdivを出力するようになりました。
しかし、diplay:noneについてはそのままなので、携帯という特殊環境などではpatorashさんの言うような方法なりをとらなければいけないようです。


----------------
単純な質問はCakeQsも使ってあげてください。
twitter
Blog

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 


. .