Heim >Backend-Entwicklung >PHP-Tutorial >用REMOTE_ADDR获取的IP有可能是被伪造的吗?解决思路

用REMOTE_ADDR获取的IP有可能是被伪造的吗?解决思路

WBOY
WBOYOriginal
2016-06-13 12:12:553077Durchsuche

用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';
名字和值由你自己决定

接收提交的页检查这个名字和值是否正确后,再进行计票

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn