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