如何将$ _SERVER变量从浏览器发送到服务器PHP

时间:2016-05-04 08:41:45

标签: php

我正在使用php编写应用程序,并一直在研究安全问题。我想知道以下代码如何抓取浏览器信息以及它如何从浏览器传递到服务器:

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

这些信息在从客户端PC传递到服务器时是否加密?黑客窃取这些数据会很容易吗?

3 个答案:

答案 0 :(得分:1)

浏览器 - > Apache - > PHP

欺骗/伪造HTTP以外的$ _SERVER变量很困难,因为你的Apache和浏览器之间存在一些握手,所以如果有人试图欺骗这些变量,他将不会收到任何响应。例如,如果有人试图欺骗REMOTE_ADDR,则很可能无法完成请求。

另一方面,从HTTP_开始的所有变量都很容易被欺骗,并且它们被发送到PHP,就像Apache从浏览器接收一样。因此,例如,用户可以使用自定义用户代理(HTTP_USER_AGENT)编写Curl脚本,您将按原样接收响应。

答案 1 :(得分:1)

$ SERVER这个超级全局变量是从Web服务器而不是PHP传递的,但是其中一些是由HTTP请求标头引用的,假设前缀为“HTTP ”是由客户端生成的(请求标头) ),REMOTE_ADDR是TCP级别的地址,不是任意的,也不是保证。

  • HTTP_USER_AGENT在标题处是纯文本,易于修改
  • REMOTE_ADDR技术上是TCP级IP地址,需要一些设备或特定软件来伪造服务器。

答案 2 :(得分:0)

基本上PHP脚本从Web服务器获取这些变量。正如手册页enter link description here中所述 - 有关于变量名称是什么以及有关它们的更多信息及其描述的信息。

所以很快回答你的问题,它们来自你正在使用的Web服务器。

如果有人试图伪造一个例子 - $_SERVER['REMOTE_ADDR'],就会有关于如何做到这一点的信息here - 虽然我从未调查过它。

希望这在某种程度上有所帮助:)