我正在建立一个PHP身份验证系统,要求用户再次登录以证明他们拥有该帐户(显然出于安全原因)。
无论如何,一旦他们输入正确的帐户信息,我就想重定向到一个页面,无论如何问题是使用PHP header(Location '...')
函数增加安全漏洞是真的吗?
有人说黑客可以高举头不确定这是否属实,因为我看过像MyBB这样的软件使用标题?
如果是,那么重定向用户最安全的方法是什么?
答案 0 :(得分:2)
标题很好,黑客也无法" hack"你的标题。永远不要使用javascript重定向。当您使用javascript重定向时,人们可以将其关闭,您的重定向和代码不再起作用 - >巨大的安全漏洞。
答案 1 :(得分:0)
标头功能本身与安全性无关。
从你的问题中不清楚你要求的是什么,因为你混杂了一切,所以,这里有一些指导
exit
答案 2 :(得分:0)
如果它是用户控制的Location
标头值,则可能存在漏洞。
e.g。
关于标题注入,来自PHP doc: -
(自[PHP] 4.4.2和5.1.2)此函数现在可以防止一次发送多个标头,以防止标头注入攻击。
对于未经验证的重定向或转发,假设您有一个页面网址,其他网址作为查询字符串参数。 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。