人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

apacheで取得できるREMOTE_ADDRは偽装できるのでしょうか?
この値をどの程度信頼して良いのかご存知の方いらっしゃいましたら教えて下さい。

※ phpの$_SERVER['REMOTE_ADDR']で取得できる値です

●質問者: tomoyuki28jp
●カテゴリ:コンピュータ インターネット
✍キーワード:Apache PHP
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● koujirou
●23ポイント

REMOTE_ADDRはクライアントが渡す環境変数なのでIP以外は容易に偽装できてしまいます。

また、プロキシを利用している場合は正しく環境変数が取得できない場合もあります。

IPが偽装できるか?という点に関してはおそらく無理だと思われますがその他の環境変数は偽装というよりも変更できます。

リフェラーの変更は、携帯端末のブラウザやPC端末で見る携帯ブラウザでよく利用されている技術です。

リンクはダミーです

http://q.hatena.ne.jp/1193063738

◎質問者からの返答

ありがとうございます。

参考になりました。


2 ● KUROX
●23ポイント

http://oshiete1.goo.ne.jp/qa2068273.html

http://oshiete1.goo.ne.jp/kotaeru.php3?q=1045255

http://hack.dot.thebbs.jp/1065413692.e40

どの程度信頼したらよいかは、

使おうと思う目的によるのではないかと思います

-----------------------------------------------

プロキシーとか通ってると、

マシンのIPアドレスじゃなくてプロキシーのIPになると思います。

パケットレベルでIPを書き換えれば、偽装できると思いますが・・。

http://www.atmarkit.co.jp/fwin2k/network/baswinlan010/baswinlan0...

送信元のIPアドレスを書き換える。リクエストは投げれても、その応答を受け取れないと

いうか、偽装されたIPに応答を返すしかないので、そういう動きすると思います。

◎質問者からの返答

いつもご回答ありがとうございます。

特定のIPに偽装してアクセスということも可能なのでしょうか?


3 ● rev-9
●22ポイント

http://www.mc.gunma-u.ac.jp/doc/security/intrd-dfs/attck-spf.htm...

TCP/IPの仕組みという観点からは、REMOTE_ADDRの偽装は「不可能ではないがきわめて困難」なレベルです。↑の回答のようにパケットを改竄したとしても、その場合はサーバーからの返信がその偽装されたアドレスへ向かうことになりますから、通信そのものが成立しません。通信を成立させるためにはアドレスの偽装だけではなく、このURLの「1.6.6 TCPコネクションのハイジャック」にあるように「シーケンス番号」というものを予測する必要がありますが、これは今どきのまともなOSなら予測できないようにしています。きちんとセキュリティパッチを当ててさえいれば、まず心配はありません。

そもそもパケットの改竄自体、プロバイダなり回線事業者なりホスティング業者なりの中の人が馘首と損害賠償覚悟でそのためのシステムを構築してサーバー室に持ち込めばあるいは可能かも、という難易度です。しかもその場合、多くのお客様の通信の中から偽装のターゲットとなる通信を選別しなければなりません。こういうことを書いて気を悪くなさらなければよいのですが、確率としてはおそらく自社内の内部犯行のほうがまだしも高いです。

つまり結論としては、「REMOTE_ADDRが実際にサーバーと通信を行っている相手のIPアドレスであることはほぼ間違いない」と考えて大丈夫です。ただし既に他の方の回答にもありますように、「実際にサーバーと通信を行っている相手」がユーザーのPCなのか、それともプロキシーなのか、あるいは携帯キャリアのゲートウェイなのか、は別問題です。

http://e-words.jp/w/E38397E383ADE382ADE382B7.html

プロキシー経由のWebアクセスでは、ユーザーのPCはプロキシーサーバーと通信しています。直接のWebサーバーとのやりとりは発生しません。Webサーバー側からは、TCPのコネクションのレベルではプロキシーサーバーがクライアントとしてアクセスしてきているようにしか見えません。いずれかの環境変数でユーザーPCのIPアドレスが通知されることもありますが、しなければならないと決まっているわけではありません。

携帯電話からのアクセスの場合は、そもそも電話機?携帯キャリア間の通信はTCP/IPではありません(一部のPDAタイプのものを除く)。Webサーバーにクライアントとしてアクセスしてくるのは、あくまでもキャリアの設置しているゲートウェイです。


4 ● y-kawaz
●22ポイント

REMOTE_ADDR はサーバから見たTCPセッションの接続元IPであり、これを偽装することはほぼ不可能と言って良いと思います。


プロキシ接続やNATを経由した場合は、ブラウザが動いているPCなどの端末が持っているIPではなく、ゲートウェイとなるプロキシやルータのIPに偽装(?)は出来ていると言えるかも知れませんが、所詮ゲートウェイのIPアドレスが REMOTE_ADDR に入るだけで自分がそのゲートウェイのIPから出てきたことは隠すことは出来ません。これでは REMOTE_ADDR を偽装したことにはならないと思います。

そもそも家庭内でブロードバンドルータを経由してインターネットに接続している場合PCには192.168.0.x等のローカルIPが付いていますが、サーバ側にはそのIPではなくブロードバンドルータのWAN側IP(プロバイダから割り当てられた)がREMOTE_ADDRとして見えますよね、プロキシやNATはそれと同じです。


別回答に対して以下のように聞いていることから、

特定のIPに偽装してアクセスということも可能なのでしょうか?

多分質問者さんが聞きたいことは、「自分の家からサイトを見るんだが、あたかも友達の家のIPからアクセスしているようにサーバに見せることは出来るか?」ということだと思います。

これは友達の家にプロキシサーバやその他ゲートウェイになりうるものが設置されてでも居ない限り不可能です。

例外として、騙したいWEBサーバの置いてあるネットワークと同じかもしくは非常に近いセグメント(例えばWEBサーバと同じHUB)に物理的に接続することが可能な場合は、全く関係ないIPを偽装して通信することは出来なくはありません。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ