我多次读过使用$ _SERVER ['REMOTE_ADDR']从客户端获取IP是安全的,因为它不能被用户直接修改(只能通过使用代理等),但它总是返回一个IP。 直到今天我收到一封来自我网站的错误邮件,其中查询时发生了mysql错误,检查是否禁止使用IP。
原始查询看起来像这样:
SELECT * FROM `bans` WHERE `ip`='{$ip}'
使用
完成ip$ip = $_SERVER['REMOTE_ADDR']
我没有对$ ip进行任何消毒,因为我认为用户无法修改它... 我收到一封电子邮件,说明此查询失败了:
SELECT * FROM `bans` WHERE `ip`='1'"+order+by+1--+, 111.222.111.222'
(注意:我放了111.222.111.222而不是攻击者的实际IP)
我的电子邮件脚本也使用$ _SERVER ['REMOTE_ADDR']获取IP,所以我也在那里获得了“假”IP:
IP: 1'"+order+by+1--+, 111.222.111.222
当你知道它可以被修改时很容易消毒,但我想知道这有什么可能吗?
答案 0 :(得分:0)
不,假装是不可能的。
您的代码有两个错误。
$ip
或$_SERVER['REMOTE_ADDR']
填写不安全的方式。你可以在这里找到很多答案来帮助你。