モバイル(携帯)でのHTTPSでの通信時に注意したいこと 
こんにちは
のびーにょです。
さて、表題の件について少し書きますか
ドコモの端末でiモードIDが取得できるようになったのがつい最近ですよね
さて、そのiモードIDですが、HTTPS通信時には取得できません。
何故か 理由は以下
・ドコモの端末にSSL証明書が標準でインストールされている
・暗号化はゲートウェイでなく端末上で行われてから送信される
・iモードIDはドコモのゲードウェイで付与される物なので暗号化通信時にはゲートウェイで『guid=on』が付いているかどうか判断できない
ってことです。
ちなみに公式にもきちんとそのあたりは明記されてます。
小さいけど。
ちなみにHTTPS時に『guid=on』ってやっても
X-DCMGUIDヘッダは当然空です
で、ならどうやってHTTPS時に端末を識別するかってことですね。
ちょっと凝ったサイト作るとHTTPSなんて割と使う可能性が高いので知らない人は注意です。
別途セッションID生成してiモードIDにひもづけてサーバ側で保存。
必要情報を別途付与したセッションIDより引き出すって感じでしょうか。
もしくはHTTPS時にはiモードIDを暗号化して『guid=on』ではなく『guid=XXXXXXX(暗号化した値を直接引数として渡す)』とかで渡して、受け取った方で複合化したIDを利用 とかですかね
あんまりどっちも変わらないですけど
どっちもハイジャックの危険性ありますよね
URL保存してれば ですけど
通信途中のデータは盗聴などの危険性はないと思いますが(HTTPS時なので)URLパラメータにてGETで送信した場合はユーザが任意に保存できる可能性があるということです。
できる限りそういう場面ではPOSTを利用し、ユーザの目に触れないようにしたいものですね。
HTMLソース見られれば一緒ですけど。
その時点のURLをユーザが公開するかしないかはそのユーザの責任なのでこちらの意図する部分ではありませんが、なるべくそうなっても大丈夫なようにワンタイムセッション的なものを工夫してあげた方が良いと思います。
ちなみに公式のuid取得部分でも似たようなものがあります。
それも当然HTTPS時には取得できません。
まぁ端末送信時より暗号化しているってことなのでしょうがないっちゃしょうがないんですけどね・・・
HTTPSで思い出しましたが携帯電話で利用する場合のSSL証明書って一昔前はVeriSignのものしか使えませんでした。
何故か
ふるーーーーーい端末ではそこ以外のルート証明書を搭載していなかったから
最近だと割と大丈夫だと見た記憶があります。
まぁ、その辺も含めて携帯電話のWebってそれなりに奥が深いんですよ?