我有一个带登录表单的Web应用程序。当用户成功登录时,应用程序会生成包含其用户ID的会话变量。然后它显示一个主菜单,其中有几个指向.php页面的链接,其中一些页面对所有用户都不一样,例如“user_profile.php”页面......等等。
如果未经过身份验证的用户知道这些页面的名称,并尝试显示这些页面,我想知道如何保护这些内容?
到目前为止,我有这样的事情:
//if the session is not set, forces the user to go back to the main page
if (!isset($_SESSION['auth'])) {
header("Location: index.php");
exit();
}
else {
//display the page, with PHP, HTML, JS...
}
在这种情况下,安全级别是否“可接受”?如果没有,我该怎么做才能提高安全性?
答案 0 :(得分:2)
您可以按照以下步骤操作:
使用重定向技术/ htaccess不显示确切的页面名称。
由于您可以在会话和会议中生成会话ID存储在urls中传入get变量。如果任何人想要非法访问页面,他必须首先记住页面重定向。会话ID。
在每个页面中调用登录功能以检查用户是否已登录,如果是,则已分配系统生成的会话ID。
如果有人登录,您可能会收到应用通知。
安全级别随着您的要求或客户要求而增加。人们每天都在努力在网络应用中嵌入越来越多的安全性。
答案 1 :(得分:0)
如果用户必须经过身份验证以及是否真实,您可以签入特定的类构造函数。这为您提供了安全页面或公共页面的灵活性。
更一般地说,您可以在包含页面之前检查它,例如index.php,请参阅以下伪代码:
if (!authenticated)
Redirect to login
Continue
但如果会话只包含userId,那听起来不太安全。最好存储加密的会话,令牌,等等。
在此处阅读更多内容:Developing a secure PHP login and authentication strategy
答案 2 :(得分:-2)
我猜安全级别是可以接受的,我认为它不需要更多。 为了保护所有其他页面,我建议在每个页面上查询Session。 当非用户想要进入页面时,他会被定向到登录页面。