2009/8/5 水曜日 Posted in 記事紹介・リンク | 4 Comments »
昨日に続きセキュリティ関連の話題です。 下記のブログ記事が大変面白く、参考になる良エントリーでしたのでご紹介させていただきます。 → 徳丸浩の日記 携帯JavaScriptとXSSの組み合わせによる「かんたんログイン」なりすましの可能性 [www.tokumaru.org] 今年の5月にドコモから発売されたJavaScript対応端末ですが、販売開始後すぐにソフトウェアアップデートによりJavaScript機能が停止されてしまいました。 上記エントリーでは、この停止の原因となった脆弱性について仮説を立てて検証しています。 詳しい内容は上記ブログを読んでいただくとして、概要としては、XMLHttpRequestのsetRequestHeaderメソッドとXSS脆弱性とを組み合わせて、ユーザエージェントやiモードIDなどのリクエストヘッダを改ざんし、かんたんログインのなりすましを行うことができたのではないか、というものとなっています。 iモードIDは、ドコモサーバ側で付与されるヘッダ情報「X-DCMGUID」から取得します。 通常この情報はケータイ上からは改ざんできませんし、もし万が一改ざんできたとしてもドコモのサーバ側で上書きされるはずです。(現状改ざんできないので実際に試したわけではないですが) もちろんPCからのアクセスであれば、容易にIDを騙ることができますが、通常ケータイサイトでは、Firewallや.htaccessなどによるIPアドレス帯域による制限を行うため、ケータイ以外からはアクセスできません。 しかしながら、ドコモ以外のキャリアを名乗ることによって、サーバ側で上書きされないX-UP-SUBNOやX-JPHONE-UIDを変更し、かんたんログインを突破できたのではないか、という仮説となっています。 ドコモからは、販売停止やJavaScript機能の停止の理由は公表されていないため、あくまで仮説ではあるものの、かなり興味深い内容ですね。 他にもソフトバンクに関しては、昨日ご紹介した記事「SoftBank Mobileの携帯用GatewayをPCで通る方法のメモ [d.hatena.ne.jp]」で示されたような、かんたんログイン機能への脅威についても言及しています。 よく「かんたんログインは使うな」「かんたんログインの利用を推奨するような記事を書くな」というご意見をいただくことがあります。 もちろんごもっともな意見ではあるのですが、セキュリティと利便性は裏表な部分もあり、キャリアが代替手段を出すまでは、サイトの内容やクライアントの意向によっては導入せざるを得ない場合も多々あると思います。 我々に出来ることは、できる限り正しい情報を把握し、より安全に使える保険を一つ一つ積み重ねていくことが大事なのではないかと思っています。 セキュリティに関する記事の場合は特に、はてなブックマーク上からの突っ込みコメントが多くなる傾向があります。 ご指摘いただいた内容に関しては、可能な限り再チェックし、記事に不適切な部分があるのであれば修正していきたいと思っています。 突っ込みをいただく場合は、出来ればはてなブックマークからのコメントだけではなく、コメント欄やフォーラムもご利用いただけると、内容の確認が行いやすく助かります。 ぜひご協力をお願いいたします。 関連: ソフトバンクの携帯用GatewayをPCで通る方法があるようです 実際に動いてすぐ使える「PHPによるかんたんログインサンプル」を作ってみました ケータイの認証用IDの現状をまとめたブログ記事「携帯各キャリアの固有IDについて (全キャリア対応)」 Read more..2008/12/5 金曜日 Posted in iPhone | 2 Comments »
@ITにiPhoneに関する興味深い記事が掲載されていましたのでご紹介します。 → @IT App Store登録もOK! JavaScriptで作るiPhoneアプリ [atmarkit.co.jp] iPhoneのアプリを作るには、通常Objective-Cを利用しなくてはならないのですが、この記事ではJavaScriptを使用したアプリの作成方法がまとめられています。 なんとこの方法であれば、AppStoreへの登録も可能とのことです。 HTML+JavaScriptの技術を使った「ハイブリットアプリケーション」という開発手法で作成を行うようです。 Objective-Cのネイティブアプリケーションを作るのに比べて、JavaScriptであれば技術的障壁も低いですし、開発の容易さという点から見てもメリットが大きいように思えます。 ハイブリットアプリケーションを作成するためのベースとなるようなフレームワークが幾つかあり、それを利用して開発を行うようです。 この記事では「PhoneGap」を利用した場合の例が記載されています。 今までiPhoneアプリを作りたかったけれど難しそうで敬遠していた、というような方は、ぜひこの方法を試してみてはいかがでしょうか。 関連: iPhone開発について解説された連載記事「目指せ!iPhoneアプリ開発エキスパート」 iPhoneでCSSを使って要素を3Dっぽく回転させる方法 90秒で理解するiPhone JavaScript(マルチタッチ編) Read more..2008/10/16 木曜日 Posted in iPhone | 2 Comments »
最近iPhoneをいじっていなかったので、久々にiPhoneネタです。 今回はiPhoneでJavaScriptを使って、要素を3Dっぽく回転させる方法をご紹介いたします。 静止画なのでわかりづらいのですが、右にクルクル回転しながら進んでいきます。 この状態からアニメーションスタート(モアレがひどくてすいません) クルクルと回転していきます。 文字が裏返っているのが面白いですね サンプルコードは次の通りです。 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <meta name="viewport" content="width=320, user-scalable=no, maximum-scale=1.0" /> <script type="text/javascript"> function animationStart() { var el = document.getElementById("target"); el.style.webkitTransition = '-webkit-transform 3s ease-in-out'; el.style.webkitTransform = 'translate(180px,40px) rotateY(180deg)'; } </script> </head> <body> <input type="button" name="hoge" value="animation" onClick="animationStart();" /> <div id="target" style="width:120px; ... Read more..2008/8/20 水曜日 Posted in iPhone | No Comments »
先日「iPhoneでJavaScriptを使わずCSSだけでアニメーションする方法」という記事を書きましたが、今回はその続きです。 前回は、左から右にすーっとアニメーションするだけでしたが、今回は拡大・縮小・回転といったアニメーションをさせてみたいと思います。 また前回は「-webkit-animation-name」を使う方法でしたが、今回はやり方を変えてみました。 静止画なのでわかりづらいですが、左からクルクルと回転しながら縮小して、右のようになります。 サンプルコードは次の通りです。 <html> <head> <meta name="viewport" content="width=320, user-scalable=no, maximum-scale=1.0" /> <script type="text/javascript"> function animationStart() { var el = document.getElementById("target"); el.style.webkitTransition = '-webkit-transform 3s ease-in-out'; el.style.webkitTransform = 'translate(180px,40px) rotate(180deg) scale(0.1)'; } </script> </head> <body> <input type="button" name="hoge" value="animation" onClick="animationStart();" /> <div id="target" style="width:120px; height:120px; background-color:red; position:absolute; ... Read more..2008/7/30 水曜日 Posted in iPhone | 1 Comment »
先日のマルチタッチ編に続き、今回はジェスチャー編になります。 対象を拡大縮小したり、回転させたりするには、座標を取得して自分でガリガリ計算しないといけないと思っていたのですが、どうやら「gestureXXX」イベントを使えばそんな必要がないということを知りました。 → 参考 [iphone.wikiwiki.jp] というわけで、今回はgestureイベントの使い方をまとめてみます。 ジェスチャーのイベントには次の3つがあるようです。 gesturestart gesturechange gestureend それぞれ、ジェスチャー開始時、ジェスチャー中、ジェスチャー終了時にイベントが発生します。 使い方は、touchXXXのときと同じようにイベントリスナーに登録するか、「onClick」のような感じで「onGestureStart」属性を追加します。 拡大縮小・回転をさせるのに、押さえておくべきポイントは2点だけです。 「event.scale」で、拡大・縮小用の倍率を取得 「event.rotation」で、回転の角度を取得 下記のサンプルでは、赤いdivタグの拡大縮小・回転を行うためのサンプルです。 width(幅), height(高さ), rotation(角度)をグローバル変数に格納し、ジェスチャーイベントから取得した数値に合わせ、styleを変更しています。 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <meta name="viewport" content="width=480, user-scalable=no, maximum-scale=0.6667" /> <script type="text/javascript" charset="utf-8"> <!-- var width = 120; var height = 120; var rotation = 0; function init() { document.addEventListener("touchmove", touchHandler, false); document.addEventListener("gesturechange", gestureHandler, false); document.addEventListener("gestureend", ... Read more..