gallu’s blog

エンジニアでゲーマーで講師で占い師なおいちゃんのブログです。

携帯なのかPCなのか

割合によくあるこの手の要求について…ちとまじめに掘りこんでみたいかなぁ、と。
要求の根幹は「アクセスしてきたのが携帯なのかPCなのかを知りたい」ってあたり。


で…「なんで」それを知りたいのか、について、概ね二種類が想定できるです。
・絵文字処理その他表示の問題
・契約者固有IDなどと偽装にまつわる問題


次に…前提条件として。
判定方法としては概ね「USER-AGENT」と「from IP」の2種類が考えられるのですが。


USER-AGENTは、キャリアが新しいなにがしかを作ってこないかぎり「新機種が出ようとも気にせずに使える」のですが、一方で偽装が容易です。


from IPは、比較的偽装が困難なのですが(無理な訳じゃないし、これによって成立しうるアタックも十分にある)、ある程度のガードが可能です。
ただ根本的に「キャリアからの情報が信用できない」というネックがありまして。
http://d.hatena.ne.jp/gallu/20081108/p3
http://d.hatena.ne.jp/m_norii/20081106/1225981496
http://d.hatena.ne.jp/gallu/20081111/p1
日々の運用コストも含めて、もの凄く真摯に考えなきゃいかん現実ってぇもんがあります。
ついでに…「どこでチェックを入れるか」も、色々と頭の痛いところです。
っつか、.htaccessは、個人的には「毎回ファイル読み込まれるなんて頭痛がする事されたくない」ので、httpd.confで真っ先に切る機能のひとつですし。
さりとて、PHPで毎回チェックするのも…そのあたりのコードのパースとかのコストを考えると、結構いやなもんです。
とは言っても「httpd.confを書き換える」ってのも個人的に抵抗感ありますし。
おいちゃん的には
・必要なキャリアさん各サイトについて定期的にチェック & mail
httpd.conf内でIncludeで各キャリアについて別ファイルで管理 & 必要なら書き換えてreload
が一番無難な落としどころ、ですかねぇ。…台数が増えると「手動でreload 」も相当にしんどいので。なにがしか考慮する必要がありますが。


んで。


まず、楽な「絵文字処理その他表示の問題」から。
これは「USER-AGENTに従って処理を振り分ける」で終了。
理由は簡単で。「偽装したら自分が見づらくなるだけ」なので、別に偽装について考慮をする必要性は原子の一欠片ほどもないので。
だとすると、判定としてはUSER-AGENTを用いるのが一番楽。手間がかかり倒すIPで判定せにゃならん理由などまったくありません。


問題は「契約者固有IDなどと偽装にまつわる問題」の場合。
実際私もやりますが。FireFoxあたり使うと、ブラウザレベルで簡単に偽装ができるんですよねいやまぁテストには便利なんですが。
とりあえず考え方としては二つ。
・契約者固有IDなんて使わない:よりコレクト
・デメリットを踏まえた上で、日々の運用までをちゃんと設計した上でIPアドレスによるチェックをする:やむを得ない現実解?
このどちらか、でしょうか。多分。


前者をチョイスしたいのですが…DoCoMoさんとかDoCoMoさんとかDoCoMoさんとかいくつか問題がありますのと(最新機種がCookie対応との事なので少し状況が改善していくであろうことを切に期待しておりますが)。
ユーザビリティの観点から、かんたんログインが手放せない」とお嘆きの方も多かろうと思う事を考えると…限りなく頭が痛い話でございます。


とりあえず「簡単には相応のリスクが伴うんだよ」という警句くらいは入れておきたいものです orz