2011-12-05 51 views
0

我使用$_SERVER['HTTP_HOST']来检查我的脚本在正确的域上运行,并在非法域上运行时发送电子邮件。问题是,有时我收到不正确的警报,脚本在错误的域上运行。这是一个虚假警报,大写的$_SERVER['HTTP_HOST']

首先,为什么会发生这种情况? 二,这是安全的检查$_SERVER['HTTP_HOST']还是有更好的为什么?

注:我没有在我的代码中将值转换为小写。

+0

这是PHP代码吗? – home

+0

如果你从另一个文件中包含它,那么它可能是假的... –

+0

@home它会是如果它使用$ _SERVER。 – pgl

回答

1

$ _SERVER ['HTTP_HOST']是脚本被访问的主机名。所以,如果有人去http://WWW.EXAMPLE.COM/它会是大写。

这是安全的检查,只是先用strtolower()将其转换为小写。

编辑:我说这是安全的检查,但有一个警告:使用HTTP/1.0的用户代理不会提供Host:头,因此$ _SERVER ['HTTP_HOST']将被取消设置。这是不太可能发生的,但如果你想防止它,请确保你编码的可能性。

+0

,但所有网页浏览器都会自动将域名转换为小写字母,并且在以大写字母输入时不会收到警报。 – m3hdi

+0

然后,对于您发布生成警报的代码以及一些示例输出,这将是一个好主意。 – pgl

+0

这是它: \t \t $valid_domain="example.com"; \t \t if(@strpos(@$_SERVER['HTTP_HOST'],$valid_domain)===FALSE) \t \t @mail('toemail', 'alert', $_SERVER['HTTP_HOST']); \t \t // I get EXAMPLE.COM sometimes in emailed alert. m3hdi

相关问题