【发布时间】:2019-06-13 04:14:32
【问题描述】:
这是 PHP 中客户端主机名的超全局:
$_SERVER['REMOTE_HOST']
它通常看起来像:
ecIP-AD-DRE-SS.us-west-1.compute.amazonaws.com
IP-AD-DRE-SS.bb.dnainternet.fi
IP-AD-DRE-SS.dynamic.lounea.fi
有人可以更改他们的主机名,使其包含能够进行 SQL 注入的内容吗? 此外,如果您只从用户输入中删除单引号 ',是否可以防止 SQL 注入?
【问题讨论】:
-
既然您应该执行上述操作(参数化准备好的语句),主机名是否可以包含 SQL 并不重要。永远不要相信您无法 100% 控制的数据。即使这样,您也应该小心(因为您可能会不小心输入可能会破坏查询的错误字符)。
-
我认为改变 _SERVER 值的唯一方法是操作 php 二进制文件或配置。因此,如果服务器是可信任的,则没有问题。当然有人可以操纵反向 DNS 名称解析,但这种操纵水平值得注入 (rofl) 的奖励。
-
@WalkerLeite -
$_SERVER-array 包含许多来自客户端的值,因此即使您的服务器是受信任的,也并不意味着所有这些值都可以。
标签: php mysql sql sql-injection code-injection