読者です 読者をやめる 読者になる 読者になる

ウェブのアプリケーションにIPアドレスが伝わる経路は知っておくべきじゃないかな

セキュリティ

CakePHPのgetClientIPを使っていいのは小学生までだよねー | へぼい日記と、そろそろCakePHPについて一言言っておくか | へぼい日記をみて、この仕様は仕方がないだろうなー、と思った。
理由としては、参照先でも示されているけどリバースプロキシがいたりとか。僕が去年してた仕事だとSSLアクセラレーターが挟まっていたので、アプリケーションサーバーから見た接続元がアクセラレーターのIPアドレスになってて、ログをとるためにアクセラレーターにアクセスしたIPアドレスをHTTPヘッダーに入れて送ってくださいよーみたいな話をして、myGetClientIPAddress()みたいなものを作った。そういう事例があることを考えると、IPアドレスを保存しようとか、もっと重要な認証(の条件)に使おうということになったら、IPアドレスがどういう経路で伝わってくるのかを開発者は把握しとくべきだし、CakePHPとかいうフレームワークAPIがなにを返しているのかも知っておかないまずいので、CakePHPの作者が仕様だし開発者は知っとくべきと言ってるのもまっとうだと思う。ドキュメントにきちんと説明が書かれていていないのはダメだと思うけど。

日記 あとー

なぜIPアドレスをこんな気にしないといけないかというと、i-modeCookieに対応していないからi-modeからのアクセスなら契約者固有IDというのを使って認証やセッション管理をしようとしているからだと思っていて、僕はモバイルサイトの開発はしたことがないのでこの辺は詳しくないのですが、一般的にIPアドレスと端末が勝手に送ってるHTTPヘッダーのみで認証しようというのがそもそもやばいと思うので、i-modeはさっさとCookieを実装するべきだと思うし、たぶん多方面からのプレッシャーもあって近い将来Cookieが実装されると思うけど、そうなるとCookieに対応してる端末(固有IDがなくなるかも?)と固有IDを使わないといけない端末が混在して、もっとやばいことにならないかなーみたいなことを思った。前例はあるのだろうか?
最悪のパターンとしては、ブラウザのバージョンをHTTP_USER_AGENTで判断しろとかいう仕様で、セキュリティ専門家でブロガーでもあるT木先生がキレる。