PHP安全问题

时间:2011-08-31 23:49:04

标签: php security

如果我希望人们只使用我网站上的链接访问我网页上的某个页面,而不是在地址栏中输入,那么这样就可以...

请注意,用户首先必须登录其帐户并设置所有会员页面,以便用户在访问会员页面之前必须登录其帐户。

if (isset($_SERVER['HTTP_REFERER'])) {

// show page content

}

else {

header('Location:http://');
exit();
}

我说的是,如果点击了一个链接,那么页面就会显示,但是如果没有点击该链接,并且在地址栏中输入了链接所指向的地址,它将进行重定向。

我要求链接会将人们引导到某个表单,并且我不希望在没有先在前一页上设置某些变量的情况下访问该表单,或者在没有登录的情况下进行访问(因为人们可以创建)他们自己在另一个指向同一地点的网站上的链接)

由于

5 个答案:

答案 0 :(得分:3)

以任何方式都不安全。来自here

  

将用户代理引用到的页面地址(如果有)   当前页面。 这是由用户代理设置的。并非所有用户代理都会这样做   设置这个,有些提供修改HTTP_REFERER的能力   特征。 简而言之,它无法真正被信任。

答案 1 :(得分:2)

用户可以将引荐来源设置为他们想要的任何内容,所以不,检查设置是不是一种安全的方式来检查它们是否通过第一页进入第二页。

答案 2 :(得分:1)

HTTP_REFERRER非常容易被欺骗。当您希望表单安全时,通过向字段添加隐藏令牌并确保在提交表单时匹配来实现某种CSRF保护。最好的办法是确保他们的凭证确实有效。

答案 3 :(得分:0)

这对我来说似乎非常错误;如果您想要设置某些变量和/或要登录用户,只需检查表单页面顶部的所有这些条件,如果条件不满足,则将访问者重定向到其他位置。

答案 4 :(得分:0)

我不确定您对从上一页设置变量的意义,或者您是如何实现这一点的。它当然可能,但我会对你如何去做它感兴趣。

您的问题是正确的,当来自其他页面时,引荐来源将被设置为该页面。然而,在安全性方面,依靠它并不是一个好主意,因为它很容易被欺骗。唯一可靠的方法是询问您听起来已经在做的凭据(用户名和密码等)。

您是否可以测试变量是否已设置,以及它们是否已重定向?