とあるモバイル系エンジニアの日々

2009年08月05日

モバイル用GWのIPアドレスを気にしてた時代もあったなぁ

twitter始めたらすっかりブログ書かなくなってしまいましたがどうしても気になるエントリがあったので久しぶりに。

orangevtr いろいろ認識が甘すぎて唖然とする。IP制限してても今時はクローラーキャッシュからソース読めるし( http://d.hatena.ne.jp/komoriya/20090122/1232619395 )、HTTPヘッダは偽装できないとかいくらなんでも。PHP使いなのにcurl知らないの


はてなブックマーク - ke-tai.org > Blog Archive > ソフトバンクの携帯用GatewayをPCで通る方法があるようです

はてブでは制限文字超えちゃったのとちょっと言い回しが不遜な感じになってしまったので改めて。


ソフトバンクの携帯用ゲートウェイを、PC経由で通る方法があるとのことです。

扱う情報にもよりますが、ケータイサイトではIPアドレス帯域を制限して、ケータイからのアクセスのみを許可するのが一般的です。

これが可能なのであれば色々と問題がありますね。


ke-tai.org > Blog Archive > ソフトバンクの携帯用GatewayをPCで通る方法があるようです

サーバー側では端末からのアクセスしか想定せずに実装していたはずが、思いに反して端末以外からもアクセスが来ることがあるようなのでこれは問題だ!というエントリ。


この中で何点か認識に根本的な相違があるようなので、それを指摘したかったのが前述のブクマコメントです。まずこの部分↓

これらの方法をつかえば、例えばケータイからのみしかアクセスできないサイトにアクセスし、HTMLソースを見てデザインの参考にする、といったことが可能になります。


ke-tai.org > Blog Archive > ソフトバンクの携帯用GatewayをPCで通る方法があるようです

GWのIP制限のみによってケータイからのアクセスしかできないようにしたサイトであっても、クローラーキャッシュからHTMLソースコードを確認することが可能です。

モバイルサイトのコーディングをする際、他サイトのコードを参考にしたいけど携帯端末以外のIP制限がかけられておりソースが参照できない場合があります。

そういったときはGoogleを使ってPCのブラウザなどから見る事ができます。


IP制限のかけられたモバイルサイトのソースを見る方法 - komoriyaのはてなダイアリー

なので、HTMLのソースを見られてデザインの参考にされるということは大いにありえます。というか、PCのWebの世界では当たり前ですよね。

実は同様のロジックで、身近でも時たま「ソース見られないからセキュリティとか気遣わなくてOKとかいう」輩も見かけるのですが、これは完全に開発者の怠慢だと思っています。*1

ただ、契約ユーザID(x-jphone-uid)のヘッダ情報はネットワーク側で付与されるので、こちらは偽装が不可能とのことです。


ke-tai.org > Blog Archive > ソフトバンクの携帯用GatewayをPCで通る方法があるようです

これについてですが、前段まででキャリア指定のIPアドレスからアクセスしてくる端末には携帯端末に限るという前提が既に崩れているわけなので、当然任意のHTTPヘッダを送信してくる場合もあるわけです。


特に「モデム接続した場合」とありますがその場合はリンク層での接続ですから、HTTPプロトコルであるx-jphone-uidヘッダの上書きが起こるのは考えにくいです。*2(2009/8/6訂正追記しました。こちらはGWを通りさえすれば付加されると考えても良さそうですね。)

なぜ対策が取られていないのでしょうか?


ke-tai.org > Blog Archive > ソフトバンクの携帯用GatewayをPCで通る方法があるようです

この答えは明白です。なぜなら、


キャリアは対策をとる理由がない


からです。


端末IDというのは、本来広告配信とかクリック集計とかの、「ある程度は誤差が認められる程度の緩い」個体認識に利用されることを想定されて設けられている程度のもので、認証などに利用すべきではなく、あくまでWebアプリケーションですので、ID/パスワード認証+セッション保持で行うというのが大原則です。


悪用方法としては、待ち受け画像などにアクセスしてPC上から保存してしまう(これが可能かどうかはプログラム側の作りにもよりますが)、他人の端末ID(製造番号)を騙ってログインしてしまう、などが考えられます。


ke-tai.org > Blog Archive > ソフトバンクの携帯用GatewayをPCで通る方法があるようです

前述の前提から、キャリアとしては端末IDを認証に使うというのは想定外という訳です。*3


このあたりは高木浩光氏のブログなどでも幾度となく上っている話ですね。


ただし、ケータイサイトでは「かんたんログイン」などの手段が横行しており、ユーザー視点ではある程度の市民権を得てしまっているのは事実であるので、この方法を提供できないというのはユーザビリティ上劣ってしまうことになってしまい、受託開発の場合や、競合メディアで実装されている場合はどうしても実装せざるを得ない場合があることも確かです。


現場のエンジニアとしては、本来としては何が「本来正しくて」、かつあくまでその中で現実問題としてどういうソリューションを提供するのが妥当かを判断するのが重要ではないかと思います。

その上で、


  • 受託開発の場合:現実装方法に伴うセキュリティリスクと利便性のトレードオフについて顧客に十分に説明する
  • 自社サイト開発の場合:ユーザーにまつわるデータの重要性とセキュリティレベルを鑑みて、利便性とのトレードオフを十分に検討する。また、ユーザーは極力リスクを負わないようにし、どうしても必要な場合は十分に説明する

とするのが開発者としてあるべきスタイルではないかと考えます。


もちろん一方で、Webサイト開発環境として不備であるならば、多方面からキャリアにはたらきかけていくのも重要です。


実際の身の回りの仕事上では、実は認証の目的でGWのIPアドレスをベースにチェックする、ということはやめてしまいました。その代わり、通常のブラウザで閲覧された場合も十分問題ないように出力することを最初から想定してサイトを構築するようになっています。


どうしても「かんたんログイン」に相当する機能を実装しなくてはならない場合も、重要な情報は取り扱わないようにしたり、ワンタイムセッションと組み合わせるとかしてセキュリティを考慮するようにしています。

ブクマとかコメントいただいたので追記。(2009/8/6)

id:HiromitsuTakagi 氏のブクマ

「キャリアとしては端末IDを認証に使うというのは想定外という訳です*3」< いやいやところがどっこい → http://bit.ly/WgcdbNTTドコモは、契約者固有IDが「簡単ログイン」のために使うものであることを公式に認めたのだ」

・・そうでした。該当のエントリは読んだことがあったのですが、「キャリアとしては公式に認めていないもの」と思い込んでいました。そうなると、本文の

前述の前提から、キャリアとしては端末IDを認証に使うというのは想定外という訳です。

というのは事実と反してしまいますね。すみません。

id:IwamotoTakashi 氏のブクマ

元記事には偽装できなかったとの追記がある。

確かに元記事には

※追記 フォーラムから次のような報告がありました

試してみたのですが、実際にSBのIPでパソコンから接続することが出来ました。

FireMobileSimulatorで指定してみたのですが、偽装出来ませんでした。

ke-tai.org > Blog Archive > ソフトバンクの携帯用GatewayをPCで通る方法があるようです

とありましたが手順が曖昧だったのとソースが不明確だったので、該当の場合に偽装できなかった確認とは考えていませんでした。しかし、コメントで「匿名の臆病者」氏より

>リンク層での接続ですから

透過プロクシという仕組みはご存じない? あ、ということは少なくともhttpsにx-jphone-uidが乗っていたら擬装の虞か。(端末はuidを吐かないので)

確かに透過プロキシ使えば任意に付加できますねー。DoCoMoのX-DCMGUIDヘッダもHTTPSでは付加されないし、も同じ仕組みなのかも。

となると、「キャリアのGWを通る限り端末IDは付加される」という仮定は成り立ちそうですね。この点については訂正させて頂きたいと思います。

>端末IDを認証に使うというのは想定外

公式プロバイダの会員管理って、いわゆる端末 ID(docomo/SBMはuid、auはEZ番号)を使うしかないし、公式の仕様にもそう載っているし、IPアドレス制限をするように、と書いてあるんですが。docomoのuidなんてクエリ文字列に乗せるんですよ? 公式プロバイダ向けにはIPアドレスの変更情報は流れますけれど、それだけです。

ただし、いわゆる端末IDと呼ばれるものでも、端末製造番号(docomo)、FOMAカード番号(docomo)、端末シリアル番号(sbm)は公式サイトでは使いません。

私も公式サイトは何度も構築したことがありますし、上記手段しかないことはよく理解しています。しかし、「公式CP向けの仕様にもそう書いてあるから」とか、「どこのサイトでもそうやっているから」という点で思考停止してしまってはいけないのでは、ということがこのエントリで言いたかったことです。


キャリアの仕様にどうしても乗っからなければならないの場合もありますが、そこに潜在するリスクを理解してやむなくそうしているのか、そういう仕様だからということで思考停止しているかは大きく違うと思うのです。


前者であれば顧客やユーザーのリスクをなるべく低減するアクションに出ると思うし、キャリアへの喚起も多方面からされていくはずだと思いますがいかがでしょうか。


逆にこういう環境でしか開発をしたことがない開発者がPC Webサイトを構築しようとすると・・どうなるか容易に想像できるでしょう。今どきセッションもまともに使えないようなエンジニアの出来上がり、です。これは夢物語ではなく、実際にそういうエンジニアには多々遭遇したことがあり、幾度となく唖然とさせられてきました。


そういった後継エンジニア育成の観点からも、「この仕様は本来としては非常にまずい仕様なんだけど現状は乗っからざるを得ないんだよ」と言い続けることは必要だと考えます。

*1:特にモバイルWeb開発専業のエンジニアによく見かける気がします

*2:すみません、こちらも実際に検証した訳ではありません。けれども十分合理的であるとは思います

*3:本音はともかくとして建前はそうなっていると思います

匿名の臆病者匿名の臆病者 2009/08/06 08:52 >端末IDを認証に使うというのは想定外
公式プロバイダの会員管理って、いわゆる端末ID(docomo/SBMはuid、auはEZ番号)を使うしかないし、公式の仕様にもそう載っているし、IPアドレス制限をするように、と書いてあるんですが。docomoのuidなんてクエリ文字列に乗せるんですよ? 公式プロバイダ向けにはIPアドレスの変更情報は流れますけれど、それだけです。

ただし、いわゆる端末IDと呼ばれるものでも、端末製造番号(docomo)、FOMAカード番号(docomo)、端末シリアル番号(sbm)は公式サイトでは使いません。

>リンク層での接続ですから
透過プロクシという仕組みはご存じない? あ、ということは少なくともhttpsにx-jphone-uidが乗っていたら擬装の虞か。(端末はuidを吐かないので)

ketaiorgketaiorg 2009/08/06 11:34 ke-tai.orgのmatsuiです。
この度はご指摘ありがとうございます。
わざわざこのようなエントリーまで書いていただき感謝しています。
幾つかこちらの意図と違う部分がありましたので訂正させていただきますね。

まずはてぶのコメントにもあるとおり、私が「HTMLソースが見えるのは問題だ」と
言っているように見えてしまったのかもしれませんがそれは誤解です。
HTMLソースが見えてしまうことによって、セキュリティが保てなくなるサイトなど論外ですし、
それがあまり大きな問題とは考えていません。(なので例をあげる際に悪用方法の方にいれてありません)


> どうしても「かんたんログイン」に相当する機能を実装しなくてはならない場合も、重要な
> 情報は取り扱わないようにしたり、ワンタイムセッションと組み合わせるとかしてセキュリ
> ティを考慮するようにしています。

こちらについては全面的に同意です。すばらしいと思います。
惜しいのは、上記についての説明がなく、後続の人が具体的にどうすればよいのかわからない点です。

たしかにかんたんログインは色々と問題があるかもしれません。
しかし正直なところキャリアが代替案を出さない限りは、かんたんログインを撲滅することは難しいと思います。

せっかくここまで、問題提議をされているのですから、ぜひ上記の対策についても情報を公開していただけると、
世間の人がかんたんログインを少しでも安全に使うための指針になると思うのですがいかがでしょうか。

とおりすがりとおりすがり 2009/08/06 15:55 匿名の臆病の者さん
> 公式の仕様にもそう載っているし、IPアドレス制限をするように、
> と書いてあるんですが。

それって、どこに書いてあります?
特に「IPアドレス制限をするように」という部分の書きぶりが気になります。
本当にちゃんと「IPアドレス制限をするように」と書いてあるのですか?

nihennihen 2009/08/06 16:00 まぁいろいろと突っ込みははいっているようなので残っている点を。

>GWのIP制限のみによってケータイからのアクセスしかできないようにしたサイトであっても、クローラーのキャッシュからHTMLのソースコードを確認することが可能です。
間違い。クローラのIPを許可している場合のみ。キャリアのGWのIP制限のみであればクローラからも見れない。

ま、ソースが見られると危険なサイトが糞なのは間違いないですけどね。

匿名の臆病者匿名の臆病者 2009/08/06 16:21 >とおりすがりさん
残念ながら、守秘義務がありまして、どの資料に載っているとはしゃべれないんですよ。一般人は手に入れられない資料です。

orangevtrorangevtr 2009/08/07 11:44 > id:nihen
確かにキャリアのGWのIP制限のみであればクローラーからも見れないですね。自分で書いてて矛盾してる・・

ただし現実問題としてモバイルSEO対策は必須ですからクローラーにはIP開けるのが通例でしょうね。そういう意味では実質HTMLソース見られないと思い込んでても見られるということはあるでしょうね。

> 匿名の臆病者様

公式の仕様については自分もキャリアと方式が多々あることをあれからいろいろと反芻してみたので、ぜひ議論したいところですが、ウチも守秘義務があってできないですね。。

あとやっぱり指摘いただいたように「公式サイトの認証」について頭からすっぽり抜け落ちていた部分はありました。なので、本文中の

| なぜなら、
| キャリアは対策をとる理由がない
| からです。

というのはちょっと言いすぎでした。かんたんログイン云々については責任ないかもしれませんが、公式向けの手段として提供している限りにおいては責任が生じるでしょう。

だからこそ以前高木氏が指摘したようにIPアドレス帯域はHTTPSで配信する必要があるでしょうね。

ちょっと情報が整理できていないままエントリポストした面は否めないですね、混乱させる記事になってしまい申し訳ありませんでした。お詫びいたします。

かにたろかにたろ 2009/09/09 01:21 >公式プロバイダの会員管理って、いわゆる端末ID(docomo/SBMは>uid、auはEZ番号)を使うしかないし、公式の仕様にもそう載っ>ているし、IPアドレス制限をするように、と書いてあるんですが
どの資料とかは別にいいんですが、本当に書いてあります?

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/orangevtr/20090805/1249489623