PHP Session 安全关键步骤

标签 php html authentication ldap

我在 PHP 登录和登录系统后的用户验证方面苦苦挣扎。我知道基础知识,但我不确定我是否做对了。我将尝试逐步解释它。

  1. 我有一个用户名和密码表单。
  2. 在用户输入他们的登录名和密码后,我正在使用 LDAP 身份验证来授权他们。如果身份验证通过,那么我需要开始新的 session 。
  3. 新 session (这是我正在努力的地方)。

    if ($validation->ldap_authentication())
    {
       $session = new session();
       $session -> login($validation->getUsername(),     $validation->logedAs(), $validation->getSID());
       if($session->validate_login())
       {
           exit(header('Location:index2.php'));
       }
       else
       {
           echo 'error';
       }
    }
    

还有我的 session 类:

class session
{
    public function __construct()
    {   
     if(!isset($_SESSION)) 
    { 
        session_name(SESSIONNAME);
        ob_start();
        session_start();       
    } else {
        session_regenerate_id(true) ;
    }
}

    public function login($sessionUserName, $logedAs, $sid)
    {
        $_SESSION['logedUserName'] = isset($sessionUserName) ? $sessionUserName : null;
        $_SESSION['logedAs'] = isset($logedAs) ? $logedAs : null;
        $_SESSION['sid'] = isset($sid) ? $sid : null;
    }


    public function validate_login()
    {
        if (!isset($_SESSION['logedUserName']) || (trim($_SESSION['logedUserName']) == '') ||
               !isset($_SESSION['logedAs']) || (trim($_SESSION['logedAs']) == '')    ||
               !isset($_SESSION['sid']) || (trim($_SESSION['sid']) == '')         
                    )
        {
            return false;
        } else {
            return true;
        }

    }
}
  1. 所以在其他页面中我需要启动一个类 session(再次)并验证 validate_login()
  2. 对我来说,它的身份验证看起来很差。

我需要添加和改进什么?

我已经在网上搜索过但找不到答案,也不知道我到底需要改进什么。

最佳答案

我是 PHP 初学者,所以我的回答可能毫无值(value)。

我认为您可以信任存储在 $_SESSION 中的变量,因为只有服务器才能访问它们。所以你可以有一个 bool 值 $_SESSION['loggedIn'] 让你知道用户已经成功完成登录过程,并且这个变量可以从任何页面访问。

关于PHP Session 安全关键步骤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42348071/

相关文章:

php - 当我按下拒绝时,Confirm() 不会拒绝

html - CSS HTML 链接图像悬停改变段落格式

javascript - Onclick事件+Enter键

php - 有没有什么情况是我们没有主键的?

php - 这是什么设计模式?

PHP:使用 str_pad 不起作用?为什么?

javascript - AngularJS:ng-model 不更新对象,但更新对象中的字段

authentication - 无状态 RESTful API 和 3rd 方身份验证

适用于 Python 程序员的 PHP : UTF-8 Issues

php - 数组键上的模式匹配