header()安全吗?如果不是最好的选择?

时间:2014-04-07 13:02:51

标签: php security location

我正在建立一个PHP身份验证系统,要求用户再次登录以证明他们拥有该帐户(显然出于安全原因)。

无论如何,一旦他们输入正确的帐户信息,我就想重定向到一个页面,无论如何问题是使用PHP header(Location '...')函数增加安全漏洞是真的吗?

有人说黑客可以高举头不确定这是否属实,因为我看过像MyBB这样的软件使用标题?

如果是,那么重定向用户最安全的方法是什么?

3 个答案:

答案 0 :(得分:2)

标题很好,黑客也无法" hack"你的标题。永远不要使用javascript重定向。当您使用javascript重定向时,人们可以将其关闭,您的重定向和代码不再起作用 - >巨大的安全漏洞。

答案 1 :(得分:0)

标头功能本身与安全性无关。

从你的问题中不清楚你要求的是什么,因为你混杂了一切,所以,这里有一些指导

  • 可以被劫持的标头是客户端标头。当您发送服务器时。
  • 您需要保护的是目标脚本,该脚本必须使用会话变量来识别客户端。
  • 当您使用标题来阻止某人访问某个网页时,将是不安全的。每当您发送应该将客户端发送到其他页面的标头时,必须始终跟随exit

答案 2 :(得分:0)

如果它是用户控制的Location标头值,则可能存在漏洞。

e.g。

关于标题注入,来自PHP doc: -

  

(自[PHP] 4.4.2和5.1.2)此函数现在可以防止一次发送多个标头,以防止标头注入攻击。

source here

对于未经验证的重定向或转发,假设您有一个页面网址,其他网址作为查询字符串参数。 e.g。

http://www.example.com/redirect.php?url=account.php

如果您的脚本被盲目地重定向到account.php,那么攻击者可以通过电子邮件将URL发送给受害者

http://www.example.com/redirect.php?url=http://www.evil.com

或混淆为

http://www.example.com/redirect.php?url=%68%74%74%70%3a%2f%2f%77%77%77%2e%65%76%69%6c%2e%63%6f%6d

如果用户在点击之前检查了域名,它似乎会转到您的www.example.com网站并且看起来很安全,但是当该页面重定向到攻击者时它不是,并且可能是网络钓鱼尝试。如果他们使evil.com看起来像example.com那么一个不知情的用户可能不会注意到它为时已晚并且他们已经输入了他们的凭证。

在您的情况下,Location看起来不受用户控制,因此您不应该容易受到这些攻击。但是,请务必在设置标题后致电exit,这样您就不会outputting extra unintended content that an attacker may use to their advantage