2016-05-04 32 views
2

私はPHPを使用してアプリケーションを作成しており、セキュリティ上の問題を検討しています。私は、次のコードは、ブラウザの情報をつかむ方法を知りたいのですが、それはブラウザからサーバーに渡す方法:

$_SERVER['HTTP_USER_AGENT'] 
$_SERVER['REMOTE_ADDR'] 
gethostbyaddr($_SERVER['REMOTE_ADDR']) 

は、それがサーバーへのクライアントPCから渡されたとき、暗号化され、この情報はありますか?ハッカーがこのデータを盗むのは簡単でしょうか?

+0

$ _SERVER変数はブラウザからのものではありません。それらはWeb ___server___(Apache、nginxなど)から来ています...もしそれらがブラウザ情報を含んでいれば、ブラウザがリクエストヘッダのウェブサーバに送信した情報です –

+0

これはいくつかの有用な情報を含んでいます:http:// security.stackexchange.com/questions/32299/is-server-a-safe-source-of-data-in-php – Daan

+0

'HTTP_USER_AGENT'は信頼できるものではありません。 'REMOTE_ADDR'はロードバランサまたはプロキシサーバのIPでもかまいませんので、' X-Forwarded-For'ヘッダもチェックする必要があります。とにかく解決しようとしているセキュリティ上の問題は何ですか? – Mjh

答えて

0

PHPスクリプトは、これらの変数をWebサーバーから取得します。マニュアルページに記載されているようにenter link description here - 変数名とその詳細、およびその説明に関する情報があります。

すぐにあなたの質問に答えるために、彼らはあなたが使用しているWebサーバーから得られます。

誰かが例を偽造しようとした場合 - $_SERVER['REMOTE_ADDR']それはどのように行うことができるかについての情報がありますhere - 私はそれを調べたことはありませんが。

ホープこれはいくつかの方法:)

0

ブラウザに役立ちます - >アパッチ - > PHP

なりすまし/あなたのApacheとブラウザの間にいくつかのハンドシェイクがあるとして、HTTP以外の$ _SERVER変数を偽造、困難であるので、誰かがこれらの変数を偽造しようとすると、彼は何の応答も受け取りません。たとえば、誰かがREMOTE_ADDRを偽装しようとすると、要求が完了しない可能性があります。

一方、HTTP_から始まるすべての変数は、スプーフィングするのが簡単で、ブラウザからApacheに受信されたときにPHPに送信されます。たとえば、ユーザーはカスタムユーザーエージェント(HTTP_USER_AGENT)を使用してCurlスクリプトを作成することができ、そのまま応答を受け取ります。

0

$ serverこのスーパーグローバルVARは、Webサーバの代わりにPHPから渡されたが、それらのいくつかはHTTPリクエストヘッダによって参照され、接頭辞「HTTP」と言わせているが、クライアント(リクエストヘッダー)、およびREMOTE_ADDRによって生成されますTCPレベルのアドレスであり、任意ではありませんが、保証もありません。

  • HTTP_USER_AGENTは、ヘッダに平文で
  • REMOTE_ADDRは技術的にはTCPレベルのIPアドレス上で変更するのは簡単です、偽のサーバーにいくつかの機器や特定のソフトウェアが必要です。
関連する問題