我正在远程服务器上制作安全的 Web 应用程序。是否有阻止用户访问仅对发布了登录详细信息的用户可用的网页的行业标准。
到目前为止,如果用户发送持有会话变量,则使用简单的标头重定向来保护经过身份验证的用户页面。
这是行业标准吗?有没有更好的方法来实现这种方法。
pysedo 代码
Session code dosent equal value or session is null {
header redirect to index
}
我正在远程服务器上制作安全的 Web 应用程序。是否有阻止用户访问仅对发布了登录详细信息的用户可用的网页的行业标准。
到目前为止,如果用户发送持有会话变量,则使用简单的标头重定向来保护经过身份验证的用户页面。
这是行业标准吗?有没有更好的方法来实现这种方法。
pysedo 代码
Session code dosent equal value or session is null {
header redirect to index
}
就像我在评论中所说的那样,重定向标头本身并不是一项安全功能。发送重定向标头后,应确保无法正常执行。
例如:
if($username != "foo" && $password != "bar")
{
header('Location: http://domain.org/index.php');
}
echo "Authorized page";
即使用户名和密码不正确,仍然可以通过忽略Location
标题访问此页面的内容。
一个简单的解决方法是:
if($username != "foo" && $password != "bar")
{
header('Location: http://domain.org/index.php');
die("Redirecting to home page");
}
echo "Authorized page";
此外,重要的是身份验证不依赖于每个页面上的手动检查,因为这些检查很容易被开发人员忘记。尽量使这些事情自动化。
不太确定我是否正确理解了这个问题。
然而,这可能会有所帮助:由于 Web 服务器以非常好的方式处理身份验证(只要配置正确),因此只剩下热链接。您可以尝试通过服务器配置中的附加重定向规则来捕获该问题:如果 HTTP_REFERER 不是以前经过身份验证的页面,则重定向到任何位置。
我想不出更多了。重要的是在一开始就获得正确且安全的身份验证。
不确定这是否是一个好的解决方案,但我只是将登录状态保留在会话变量中:
if ($_SESSION[loggedIn] == "yes" && $_SESSION["LevelTwoPermissions"] == "yes")
{
// Grant access to allowed content...
}
else
{
// Redirect to login page or ask for login in a pop-up
}
从理论上讲,它可以通过窃取其他用户的会话 cookie 来破解,但对于我的目的来说,这是一个合理的安全级别。