具有 PHP 个会话的 sha256

sha256 with PHP session

安全方面的新手,想知道这种登录方式的安全性如何?我不会以任何方式保护任何 bank/financial 数据,而是试图保护不应该暴露给一般 public 的敏感数据。我只需要密码 - 没有完成正式登录。

这在一个名为 access.php 的文件中,其中包含一个密码输入字段。

<?php
session_start();
if (!isset($_SESSION['loggedIn'])) {
    $_SESSION['loggedIn'] = false;
}

// sha256() password 
$password = '13d249f2cb4127b40cfa757866850278793f814ded3c587fe5889e889a7a9f6c';

if (isset($_POST['password'])) {
    if (hash('sha256',$_POST['password']) == $password) {
        $_SESSION['loggedIn'] = true;
    } else {
        die ('That is the incorrect password - Please leave now');
    }
} 

if (!$_SESSION['loggedIn']):
?>

然后我的 index.php 在页面加载时需要 access.php。是否应该在 public 目录之外进行访问?我是否遗漏了其他我应该考虑的事情?

New to security and wondering how secure this type of login is?

  1. SHA-256:您使用的工具完全错误。使用 password_hash()password_verify()
  2. 此外,SHA-256 容易受到 length-extension attacks.
  3. 的攻击
  4. 使用==比较哈希有两个漏洞:

所以,回答你的问题:不是很。您的代码试图解决的问题在安全专家中广为人知,他们竭尽全力让其他人可以轻松解决该问题。这就是 password_hash()password_verify() 存在的原因。使用它们。

也就是说,欢迎来到软件安全。如果您需要一些额外的资源来帮助您进行自学,请查看此 application security reading list on Github