主机名可以注入 SQL 吗?[复制]

Can hostname inject SQL? [duplicate]

提问人: 提问时间:1/19/2019 更新时间:1/19/2019 访问量:379

问:

这是 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 注入?

php mysql sql sql 代码注入

评论

2赞 M. Eriksson 1/19/2019
由于您应该执行上述操作(参数化的预准备语句),因此主机名是否可以包含 SQL 并不重要。永远不要相信您无法 100% 控制的数据。即便如此,您也应该小心(因为您可能会不小心输入可能破坏查询的错误字符)。
0赞 Walker Leite 1/19/2019
我认为唯一改变_SERVER值的是操作php二进制文件或配置。因此,如果服务器是可信的,则没有问题。当然,有人可以操纵反向DNS名称解析,但这种程度的操纵值得注入(rofl)的奖励。
3赞 M. Eriksson 1/19/2019
@WalkerLeite - -array 包含大量来自客户端的值,因此即使您的服务器是受信任的,也不意味着所有这些值都可以。$_SERVER

答:

7赞 Alex Howansky 1/19/2019 #1

有人可以更改他们的主机名,以便它包含能够进行 SQL 注入的内容吗?

有趣的问题。或?但这并不重要,因为......

另外,如果您只从用户输入中删除单引号',是否会阻止 SQL 注入?

绝对不行。忘记处理引号,使用带有绑定参数预处理语句

编辑:另请注意,您通常不希望Web服务器对每次点击都进行DNS查找,因此通常应取消设置。如果你偶尔需要对身份验证或日志记录进行查找,你可以在 PHP 中临时进行。$_SERVER['REMOTE_HOST']

评论

1赞 tadman 1/19/2019
无法保证主机名不包含恶意内容,甚至不包含 SQL 注入。一些 DNS 解析器并不关心它们在结果中包含的内容。他们只是通过它。