<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://jackxiang.com/post//</link>
<title><![CDATA[获取用户Ip地址通用方法常见安全隐患(HTTP_X_FORWARDED_FOR)]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[WEB2.0]]></category>
<pubDate>Tue, 15 Mar 2016 10:00:43 +0000</pubDate> 
<guid>http://jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	背景：对于ip限定缩小范围，最好是采用出口IP通过公司的所有进行放行，而获取用户Ip地址通用方法常见安全隐患(HTTP_X_FORWARDED_FOR)的，所以最好是nginx在代理时就限定死：<br/> deny&nbsp;&nbsp;*.*.*.66;<br/> deny&nbsp;&nbsp;*.*.*.79;<br/> deny&nbsp;&nbsp;*.*.*.80;<br/> deny&nbsp;&nbsp;*.*.*.77;<br/>Nginx的日志的最后一个IP并不安全：<br/><textarea name="code" class="php" rows="15" cols="100">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log_format&nbsp;&nbsp;wwwlog&nbsp;&nbsp;&#039;$remote_addr - $host [$time_local] &quot;$request&quot; &#039;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#039;$status $body_bytes_sent &quot;$http_referer&quot; &#039;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#039;&quot;$http_user_agent&quot; $http_x_forwarded_for&#039;;
</textarea><br/><br/>*.*.*.57 - jackxiang.com [15/Mar/2016:18:02:33 +0800] &quot;GET /h5ds/themes/common/mobile/js/maps/swiper.min.js.map HTTP/1.0&quot; 404 20 &quot;-&quot; &quot;Mozilla/5.0 (iPhone; CPU iPhone OS 7_0 like Mac OS X; en-us) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A465 Safari/9537.53&quot; 202.*.*.78&nbsp;&nbsp;<br/>分析过程<br/>这个来自一些项目中，获取用户Ip，进行用户操作行为的记录，是常见并且经常使用的。 一般朋友，都会看到如下通用获取IP地址方法。<br/><br/>function getIP() &#123; <br/>&nbsp;&nbsp;if (isset($_SERVER[&#039;HTTP_X_FORWARDED_FOR&#039;])) &#123; <br/>&nbsp;&nbsp;&nbsp;&nbsp;$realip = $_SERVER[&#039;HTTP_X_FORWARDED_FOR&#039;]; <br/>&nbsp;&nbsp;&#125; elseif (isset($_SERVER[&#039;HTTP_CLIENT_IP&#039;])) &#123; <br/>&nbsp;&nbsp;&nbsp;&nbsp;$realip = $_SERVER[&#039;HTTP_CLIENT_IP&#039;]; <br/>&nbsp;&nbsp;&#125; else &#123; <br/>&nbsp;&nbsp;&nbsp;&nbsp;$realip = $_SERVER[&#039;REMOTE_ADDR&#039;]; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125; <br/>&nbsp;&nbsp;&nbsp;&nbsp;return $realip; <br/>&nbsp;&nbsp;&#125;<br/>这个是网上常见获取，ip函数，用这些值获取IP,我们首先要弄清楚，这些数据是从那个地方传过来的。<br/><br/>IP获取来源<br/>1.’REMOTE_ADDR’&nbsp;&nbsp;是远端IP，默认来自tcp 连接是，客户端的Ip。可以说，它最准确，确定是，只会得到直接连服务器客户端IP。如果对方通过代理服务器上网，就发现。获取到的是代理服务器IP了。<br/><br/>如：a-&gt;b(proxy)-&gt;c&nbsp;&nbsp;,如果c 通过’REMOTE_ADDR’ ，只能获取到b的IP,获取不到a的IP了。<br/><br/>另外:该IP想篡改将很难实现，在传递知道生成php server值，都是直接生成的。<br/><br/>2.’HTTP_X_FORWARDED_FOR’，’HTTP_CLIENT_IP’ 为了能在大型网络中，获取到最原始用户IP，或者代理IP地址。对HTTp协议进行扩展。定义了实体头。<br/><br/>HTTP_X_FORWARDED_FOR = clientip,proxy1,proxy2&nbsp;&nbsp;所有IP用”,”分割。 HTTP_CLIENT_IP 在高级匿名代理中，这个代表了代理服务器IP。既然是http协议扩展一个实体头，并且这个值对于传入端是信任的，信任传入方按照规则格式输入的。以下以x_forword_for例子加以说明，正常情况下，这个值变化过程。<br/><br/>来自：http://blog.chacuo.net/98.html
]]>
</description>
</item><item>
<link>http://jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] 获取用户Ip地址通用方法常见安全隐患(HTTP_X_FORWARDED_FOR)]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>