Php 有没有更好的方法来保护特定网页?

Php 有没有更好的方法来保护特定网页?,php,security,session,redirect,Php,Security,Session,Redirect,我有一个网站,只有具有管理员权限的用户才能查看某些页面。当我登录到我的管理员帐户时,$\u会话[“is\u admin”]=true已设置。然后,在我希望只有具有管理员权限的用户才能查看的页面上,我检查is_admin是否为true,否则我将他们重定向到索引页面 if(!$\u SESSION[“is_admin”]){//重定向到index.Php} 在这种情况下,有没有更好的方法来保护网页 谢谢如果您只有管理员和非管理员用户可以访问页面,那么这是可以的。 如果您有更多的用户级别,您也可以实现

我有一个网站,只有具有管理员权限的用户才能查看某些页面。当我登录到我的管理员帐户时,$\u会话[“is\u admin”]=true已设置。然后,在我希望只有具有管理员权限的用户才能查看的页面上,我检查is_admin是否为true,否则我将他们重定向到索引页面

if(!$\u SESSION[“is_admin”]){//重定向到index.Php}
在这种情况下,有没有更好的方法来保护网页


谢谢

如果您只有管理员和非管理员用户可以访问页面,那么这是可以的。
如果您有更多的用户级别,您也可以实现角色。

如果代码不在公共位置(位于公共文件夹上方),则代码更安全,因此发生问题更困难。这里发生了什么事

</php
  // Code

严格依赖于
$\u会话
全局是不安全的。有些应用程序能够“劫持”会话并操纵存储在客户端的
会话
ID
s。看一看

我建议实施某种额外级别的安全性。额外的安全级别可能包括将IP地址列入白名单,或者在
会话上缩短到期时间

另请参见(这不是同一个问题,而是类似的问题)

白名单IP地址

同样,您可以保留有权访问您的页面的IP地址的记录。如果IP地址不在允许的地址内,则拒绝访问该页。您可以将地址存储在数据库中,也可以将它们硬编码到脚本中(我不想硬编码)

下面是一个修改后的示例,取自上面链接中的zerkms,包含您的
会话
测试:

$whitelist = array('192.168.0.1', '192.168.0.2');

if ($_SESSION['is_admin'] !== true || !in_array($_SERVER['REMOTE_ADDR'], $whitelist)) {
    //Admin denied.
    header('Location: denied.php'); exit();
}

echo "You're an admin!"
缩短会话到期时间

我建议你读一下秋波的答案

更多阅读材料


只要您的登录脚本安全可靠,就可以了。此外,如果安全性确实很重要,那么您应该使用SSL(https)。请确保在测试结束后终止该脚本redirect@musa你说杀剧本是什么意思?在重定向将用户带到index.php页面之后,页面加载后是否没有任何脚本被“杀死”?
header('Location:where ever');退出谢谢,你能详细介绍一下你的两个建议吗?