php - isset($_SESSION ['admin' ]) 是一种危险的授予访问权限的方式吗?

标签 php session authentication

如果(为了论证)“admin-access”在 php 中被授予:

if (isset($_SESSION['admin']))  // this session would be set
{ // grant access; }            // after a successful login
else { //redirect ;}

如果您知道 session 的名称是什么(在本例中为 admin),这是否会是一件特别容易绕过和伪造的事情?

换句话说,如果脚本只需要“设置” session ,那么有人可以轻松伪造 $_SESSION 吗?

最佳答案

使用 isset() 对于安全性来说并不坏。这取决于你如何使用它的逻辑。如果您不仅检查 isset() 而且还检查它的值,那就太好了。

例如:

if( isset($_SESSION['admin']) && $_SESSION['admin'] == true ) { 
  // grant access
} else { 
  //redirect 
}

或者类似这样的东西:

if( isset($_SESSION['admin']) && $_SESSION['admin'] == '1' ) { 
  // grant access
} else { 
  //redirect 
}

关于php - isset($_SESSION ['admin' ]) 是一种危险的授予访问权限的方式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10569861/

相关文章:

php - 带有条件标签的 WordPress init remove_action

java - 在 session 中获取和设置属性 - Spring框架

ruby-on-rails - Rails and Devise - 访问 session 数据

django - 我在哪里放置 Django 身份验证后端文件?

java - Apache 希罗 : Using isAuthenticated() || isRemembered() for an app without high security requirements

php - 在 PHP 中检查 memory_limit

php - 为什么 netbeans 项目创建对话框中缺少 php 类别?

postgresql - psql: 数据库 "dbname"("User does not have CONNECT privilege.")/"unrecognized role option ' 连接权限被拒绝'"

javascript - 当文本自动换行时,如何在 javascript/php 中获取换行符

c++ - 如何以模块化方式保存和加载 C++ 应用程序状态