云服务器 99 / 年,新老同享(可以99/年续费),开发者力荐特惠渠道,新客户在享受9折
阿里云推广

使用阿里云函数计算获取访问者真实ip的方法

  • 内容
  • 评论
  • 相关

阿里云函数计算如何获取用户的真实ip

在函数计算业务层代码我们打印如下两个值,我们发现设计到ip的几个值是$_SERVER里面的几个值如下:

print_r(getenv());

print_r($_SERVER);

 

        echo $_SERVER['HTTP_CLIENT_IP'];

        echo "<br/>";

        echo $_SERVER['HTTP_X_FORWARDED_FOR'];

        echo "<br/>";

        echo $_SERVER['REMOTE_ADDR'];

我们通过本地访问下:

 

HTTP_X_FORWARDED_FOR:60.4.169.59 是我的客户端真实ip,REMOTE_ADDR:21.0.0.1 这个21.0.0.1,是fc后端实例获取的真实的客户端ip,说白了就是我的请求是经过这个代理过去的。我们需要的ip是HTTP_X_FORWARDED_FOR。

HTTP_X_FORWARDED_FOR能被伪造吗?

REMOTE_ADDR这个一般是无法被篡改的,但是HTTP_X_FORWARDED_FOR和HTTP_CLIENT_IP我们是可以通过程序发送curl请求伪造的,下面我们尝试通过程序伪造请求函数计算,看看函数计算获取到的ip是啥?

<?php

$ch = curl_init();

$url = "https://2.fuliv2.wziyi.net/index/testip";

$header = array( 'CLIENT-IP:192.168.1.1',  'X-FORWARDED-FOR:192.168.1.2');

//声明伪造head请求头

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_HTTPHEADER, $header);

curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);

$page_content = curl_exec($ch);

curl_close($ch);

echo $page_content;

?>