Home >Backend Development >PHP Tutorial >用REMOTE_ADDR获取的IP有可能是被伪造的吗?解决思路
用REMOTE_ADDR获取的IP有可能是被伪造的吗?
在做一个投票网页应用,相同ip一定时间不能连续投,获取IP用的是REMOTE_ADDR
请教:有可能会被恶意刷票者任意伪造不同的IP吗?我的意思是任意伪造,不考虑使用代理,反复拨号等“正常”情况。
对IP、tcp协议一类的东西基本不懂,但听说理论上可以伪造,只是无法获取返回的信息,但如果是刷票,似乎只要能post请求成功就行了,有没信息和网页返回并不重要,不知我的理解对不对?如果这样是不是意味着可以伪造ip刷票?
------解决思路----------------------
REMOTE_ADDR 表示的是直接连通到你的服务器的设备的 IP 地址
互联网中的所有路由器都做了透明设置,所以 REMOTE_ADDR 实际是你接入互联网的设备的 IP 地址
而接入互联网的路由器大多都不具备透明设置功能
你也知道伪造 REMOTE_ADDR 将无法获取返回的信息
那么你只要在判断 REMOTE_ADDR 的同时判断一下 session(sessionid 必须经过与用户的交互才能生效)或表单页需经过重定向(js 的 location 指定,php 的 header 函数)才能到达计票页,就可以避免恶意伪造了
------解决思路----------------------
生成投票页时开启 session
session_start();
然后你创建一个 session 变量
$_SESSION['name'] = 'value';
名字和值由你自己决定
接收提交的页检查这个名字和值是否正确后,再进行计票