iモードIDとutn(端末情報)との違い

DoCoMoのiモードIDについて - maru.cc@はてな」でも書いたとおり、DoCoMoでiモードIDという、契約者を識別するIDを勝手サイトでも使用することが出来るようになった。
元々、iモードIDが使える前にも、utnと言われる端末情報やFOMAカードの番号を取得する方法はあったが、それとはまったく意味が違うことになる。


iモードIDの仕様については、SSLで送ってこないとか、formのpost時の要求方法が変だとか、セキュリティ的にどうかとういのはもちろんあるし、SSLで使えないくせにCookieベースのセッションが使えないとか、不満はいろいろあるが、それでも使えるようになったことで意義があると思う。


そもそものutnとiモードIDとの違い
■utn(端末情報)
mova端末の場合には、端末製造番号
FOMa端末の場合には、FOMAカードの番号と端末製造番号
が、それぞれ送られてくる。

iモードID
契約者ごとの番号が送られてくる。


これを見ると、FOMAに限って言えば、FOMAカードは契約ごとで、機種変しても変わることがないので、iモードIDと同じような意味合いがあると思う。
しかし、movaからの場合には意味合いがまったく違うことになる。


それ以外の利点などとしては、utnもiモードIDも、どちらも取得したいページのひとつ前で準備をする必要がある。
utnの場合には、aタグやformタグに utn という属性をつける必要がある。
iモードIDの場合にも、guid=on というパラメータをつける必要がある。


一見、同じように感じるかもしれないが、意味合いがまったく違う。
utnの場合には、必ず前のページで準備をしないと、サーバ側からは取得する方法が無い。


一方、iモードIDの場合には、POSTの場合には難しいが、GETであれば、guid=on というパラメータを付けてリダイレクトすることにより取得することが出来る。

例)

a.php < aタグのあるページ guid=on記述なし
↓
b.php < iモードIDが必要なページ パラメータなしで取得できない
↓ここでリダイレクト
b.php?guid=on < iモードID取得

少しわかりにくいかもしれないが、リダイレクトで取得できるというのには大きな意味があると思う。


SSLページであっても、非SSLのリダイレクタを通すことで、iモードIDを取得することが出来る。


例)

<?php
if (!isset($_SERVER['HTTP_X_DCMGUID']) && !isset($_GET['guid'])) {
    header('location: http://example.com/index.php?guid=on');
    exit;
}
?>
<html>
<head>
</head>
<body>
<pre>
<?php
var_dump($_GET);
var_dump($_SERVER);
?>
</pre>
</body>
</html>

$_GETで、guidというパラメータが無ければ、リダイレクトするという方法だ。


いま、4月半ばにリリースする案件で、早速iモードIDを使用して作成しています。もちろん、うまく使えなければutnを使う予定でしたが。
実案件で何かあったら、またエントリを書いてみたいと思います。


追記(2008-07-11)

「セキュリティ的に」ということに関して、高木さんが詳しく書かれていました。
高木浩光@自宅の日記 - 日本のインターネットが終了する日
Webをやるものとして、もっとこういった意識を持たなければならないと感じた。



そーいえば、以前、auのEZ番号(当時はサブスクライバID)を勝手サイトへの通知も不可にするという噂があった。


確かに大きな問題で、安易に勝手サイトを作る身として楽になったという意識ではいけないと思う。
結局のところ、早く3キャリア共にちゃんとしたcookieを使えるようにして欲しい。