手机版

获取用户Ip地址的一般方法和常见安全风险

时间:2021-11-19 来源:互联网 编辑:宝哥软件园 浏览:

分析来自一些项目。获取用户Ip、记录用户操作行为是常见且常用的。一般朋友会看到以下获取IP地址的一般方法。复制代码如下:函数getip(){ if(isset($ _ server[' http _ x _ forward _ for ']){ $ realip=$ _ server[' http _ x _ forward _ for '];} else if(isset($ _ SERVER[' HTTP _ CLIENT _ IP ']){ $ realip=$ _ SERVER[' HTTP _ CLIENT _ IP '];} else { $ realip=$ _ SERVER[' REMOTE _ ADDR '];} return $ realip}这是在互联网上获取ip的常见功能。要获得具有这些值的IP,我们必须首先找出这些数据来自哪里。获取Ip源1。“远程ADDR”是远程IP,来自tcp的默认连接是客户端的IP。可以说是最准的,肯定只会让客户端IP直接连接到服务器。如果对方通过代理服务器上线,就会被发现。获取代理服务器IP。例如a-b(代理)-c,如果c通过‘REMOTE _ ADDR’,它只能得到b的IP,而不能得到a的IP.另外,篡改:的IP会非常困难,传输时直接生成php服务器值。2.' HTTP_X_FORWARDED_FOR ',' HTTP_CLIENT_IP '以便在大型网络中获得最原始的用户IP或代理IP地址。展开HTTp协议。定义了实体标题。Http _ x _ forwarded _ for=clientIP,proxy1,proxy2,所有IP都除以“,”。HTTP_CLIENT_IP在高级匿名代理中,这代表代理服务器的IP。由于http协议扩展了一个实体头,并且这个值被传入端信任,所以传入端被信任按照常规格式输入它。下面是x _ forword _ for的一个例子,用来说明这个值在正常情况下是如何变化的。image

Bug风险点分析:通过刚才的分析,我们发现这些变量实际上来自http请求的x-forward-for字段和client-ip字段。当然,普通的代理服务器根据rfc规范传递这些值。然而,当用户直接构造x-forward-for值并将其发送给用户时会发生什么?image

图(1)步骤2:修改x-forward-fox的值。我们来看看结果image

第三步,我们再修改一遍,看看会发生什么。image

哈哈,看到上面的结果,x-forward-for不仅可以设置自己的值,还可以设置任何格式值。这样,就像拥有一个可以直接写任何值的字段。服务器直接读取它,或者将它写入数据库,或者显示它。它会带来危险,这与在输入和输出之间操作数据源而不进行任何过滤检测的结果是一样的。而且容易带来隐蔽性。结论:上述getip函数不仅可以随意伪造ip,还可以任意格式传入IP。这样一来,就会出现两大问题。第一,如果你设置了某个页面,做IP限制。对方可以轻松修改IP,不断请求页面。第二,如果直接使用这类数据,会带来SQL注册、跨站点攻击等漏洞。首先,你可以限制业务,最好不要使用IP限制。第二,这个阶层会带来巨大的网络风险。我们必须纠正它。需要修改Getip以获得安全的getip函数。其实这种问题很容易出现,之前我也用它骗取了大量变相选票。它有它的隐蔽性,其实只要我们了解了某些价值观的来龙去脉。了解其原理后,修复这类bug会非常容易。离题和技巧有三个步骤,首先要做好,解决好。之后要思考为什么要这样做,理由原则是什么;最后怎么做,有没有别的办法?多问问自己,你发现自己离技术真理越来越近。你做事会越来越得心应手!作者:程默。

版权声明:获取用户Ip地址的一般方法和常见安全风险是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。