PHP判断代理HTTP_X_FORWARDED_FOR

除了正常访问网站以外,还有一种代理模式访问,burpsuite、fiddler等都是通过代理做中间人进行嗅探分析找漏洞,利用漏洞的,前段时间想判断下禁止代理访问,使用HTTP_X_FORWARDED_FOR做判断,通过各种沟通,觉得此方法不可行,没有实际落实,于是自己用php取了下参数,翻阅了下资料,通过分析判断HTTP_X_FORWARDED_FOR是否是使用代理的不靠谱,可以把代理信息去掉再发送,burpsuite就是这样做的,用HTTP_X_FORWARDED_FOR根本判断不出是代理访问的,在发送之前会把相关信息去掉。测试下 fiddle 也是不可以的,通过HTTP_X_FORWARDED_FOR控制的意义就不大了。测试代码如下:

<?
if(!empty($_SERVER['HTTP_VIA']))    //判断使用了代理
{
if(!isset($_SERVER['HTTP_X_FORWARDED_FOR']))
{
echo "1:普通匿名代理服务器,代理IP地址为". $_SERVER['REMOTE_ADDR'];
}
else
{
echo "2:透明代理服务器代理,IP地址为".$_SERVER['REMOTE_ADDR'];
echo "2:透明代理服务器,真实ip地址为".$_SERVER['HTTP_X_FORWARDED_FOR'];
}
}
else         //否则判断没有使用代理
{
echo "3:没有代理或者是高匿名代理,真实ip地址为".$_SERVER['REMOTE_ADDR'];
}

之后和新公司同事商议了下解决方案,在传输的过程中增加token,传输的内容全部为密文,实现的原理也类似https。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

This site uses Akismet to reduce spam. Learn how your comment data is processed.