我們知道通過HTTP是可以添加串改IP的,那么PHP獲取IP的時候,有可能就是假IP。那么workerman的TCP和websocket配合是否會被偽造IP呢?
還是說通過TCP連接,就壓根不需要考慮會被偽造的可能?
TCP層面可以認為無法偽造IP。但有些通訊協(xié)議里可以攜帶ip數(shù)據(jù),因為協(xié)議數(shù)據(jù)可以在應(yīng)用層串改,所以如果應(yīng)用使用協(xié)議層的ip有可能偽造。比如HTTP請求里HTTP頭部可以傳遞自定義數(shù)據(jù),比如x-real-ip: xx.xx.xx.xx
,如果應(yīng)用采用http頭部的x-real-ip作為真實ip,那這個ip可能是偽造的。如果使用socket層面的接口獲得的IP則不會偽造。也就是說在php-fpm里,$_SERVER['REMOTE_ADDR ']
獲得的ip不會被偽造,其它通過HTTP頭獲取ip比如 $_SERVER['HTTP_X_REAL_IP ']
$_SERVER['HTTP_X_FORWARDED_FOR ']
$_SERVER['HTTP_CLIENT_IP ']
等可能會被偽造。
在workerman中使用$connection->getRemoteIp();
調(diào)用的是socket層面的接口,獲得的ip不會偽造。