【问题标题】:Security for websites网站安全
【发布时间】:2021-01-14 02:08:51
【问题描述】:

我正在尝试为我的网站添加一些安全性,该网站有一个管理面板和一个用户页面。到目前为止,如果用户尝试通过 url 访问页面,我的安全性具有将用户发送回登录页面的代码。但是,仍然存在一个问题。如果我以用户身份登录,则该用户可以访问管理面板。这应该不会发生,因为它是用户而不是管理员。

到目前为止,这是我的代码:

<?php

session_start();

if (!$_SESSION['username']) {
    header("Location: login.php");
}

谁能帮助我,告诉我如何实现一段限制用户访问管理面板的代码。

谢谢!

【问题讨论】:

  • 管理员是一个角色还是只有一个特定的管理员?
  • Admin 是我表中的角色。
  • 我会使用会话吗?或者我会检查用户是管理员还是具有 $row 之类的变量的用户。如果我这样做,我不知道如何将其限制到特定的管理面板文件夹。

标签: php mysql procedural


【解决方案1】:

如果用户是标准用户或系统管理员,请在您的表上为帐户创建一个访问列。然后在您的 php 代码中将访问权限存储在会话变量中。

if($_SESSION['access']=='admin'){
     header("Location: admin-panel.php");
}else{
     header("Location: somewhereelse.php");
}

【讨论】:

  • 使用访问列来限制标准用户的移动。希望对你有帮助:)
  • 这可行,但有没有办法限制整个文件夹?
  • 是的,你可以。只需在您的管理员上创建一个设置,将用户限制在她/他可以访问的模块上
  • 我还有一个问题,我将如何启动会话以便它有两个选项。
  • Initiate 是什么意思?
【解决方案2】:

将标志/权限/角色添加到您的用户表,然后检查当前登录的用户是否有权访问页面。

一个简单的方法是示例:

admin_page.php 所以我们假设可以访问这个页面的用户只有admin

然后在您的后端您可以通过这种方式检查权限

if($user->role != "admin")
{
 // return a message here or redirect them to some error page
}

【讨论】:

  • 对不起,我不熟悉 -> 这到底是什么意思?
  • 对不起,这是对象运算符一种调用对象属性的方法。如果这对您来说很新,那么您可以关注@Ainz 的回答
  • 所以角色是一个对象?有趣
  • 好吧,我们可以说角色是属性,用户是对象注意用户不是PHP中的预定义对象,我给出的示例只是一个sn-p。如果这让您感到困惑,我很抱歉
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-04-07
  • 1970-01-01
  • 2021-03-10
  • 2018-03-03
  • 1970-01-01
  • 2011-02-12
  • 1970-01-01
相关资源
最近更新 更多