具有 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?
- SHA-256:您使用的工具完全错误。使用
password_hash()
和 password_verify()
:
- 此外,SHA-256 容易受到 length-extension attacks.
的攻击
- 使用
==
比较哈希有两个漏洞:
- Timing attacks
- Magic hash comparison(更紧迫的问题)
所以,回答你的问题:不是很。您的代码试图解决的问题在安全专家中广为人知,他们竭尽全力让其他人可以轻松解决该问题。这就是 password_hash()
和 password_verify()
存在的原因。使用它们。
也就是说,欢迎来到软件安全。如果您需要一些额外的资源来帮助您进行自学,请查看此 application security reading list on Github。
安全方面的新手,想知道这种登录方式的安全性如何?我不会以任何方式保护任何 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?
- SHA-256:您使用的工具完全错误。使用
password_hash()
和password_verify()
: - 此外,SHA-256 容易受到 length-extension attacks. 的攻击
- 使用
==
比较哈希有两个漏洞:- Timing attacks
- Magic hash comparison(更紧迫的问题)
所以,回答你的问题:不是很。您的代码试图解决的问题在安全专家中广为人知,他们竭尽全力让其他人可以轻松解决该问题。这就是 password_hash()
和 password_verify()
存在的原因。使用它们。
也就是说,欢迎来到软件安全。如果您需要一些额外的资源来帮助您进行自学,请查看此 application security reading list on Github。