这种简单的登录安全吗


<?php
if (!empty($_POST['password']) && $_POST['password'] === "correct" ) {
echo "<h1 style='color:green'>Password is correct, you may enter!!!</h1>";
}else{
if (!empty($_POST['password']) && $_POST['password'] !== "correct") {
die('<h1 style="color:red">Password is ICORRECT, you may not enter!!!</h1>');
}else{  
echo "Enter Password:";
echo "<form action='' method='POST'>";
echo "<input type='text' name='password'>";
echo "<input type='submit'>";
echo "</form>";
die();
}}  
?>

除了有人访问你的网络服务器并查看密码外,有没有任何方法可以让任何人(如黑客(访问你的网站,并在不知道密码的情况下看到"密码是正确的,你可以输入!!"。

而且,我们可以排除SSL攻击之类的东西。

我只是想知道,从表面上看,这个登录安全吗?

我投反对票。密码永远不应该在代码库中,尤其是当你用git跟踪代码时。使用环境变量或数据库。

这里有一个很好的包,我使用了很多环境变量加载:

https://github.com/vlucas/phpdotenv

也永远不要将您的env文件提交到您的repo。:(

我认为,如果你在代码中的某个地方对登录凭据进行硬编码,那么与登录凭据相关的一切都会构成威胁。我宁愿使用像MySQL这样的数据库,它带有md5散列密码,没有人可以解码。

一个好的方法是在数据库中搜索用户名和密码,看看它们是否匹配:

SELECT username,password FROM users WHERE username='username' AND password='password'

如果查询返回了一些内容,那么您就有了匹配项。如果没有,则打印一条错误消息。

不,这不是一个安全登录。不仅仅是因为你选择了密码。

你说得对,为了知道你在做什么,黑客必须进入服务器并查看代码。

然而,这是默默无闻的安全。而且是无效的。

您希望在安全性方面练习分层。你应该假设黑客可以访问你的源代码。即使知道代码,也应该防止它们进入您的页面。

毕竟,你有多确信你的服务器不会被黑客入侵,或者你放在Github上的源代码不会泄露。或者,一个实习生错误地配置了服务器,Apache停止处理php,只输出原始代码。即使发生了所有这些事情,你也希望你的页面安全。

请记住,PHP有一个password_verify函数,可以用来检查密码。以及一个password_hash函数,它将更新用于帮助保持安全的算法。

您不应该在代码中对密码进行明文比较。你应该这样做,这样你就不会知道密码是什么,信息就不会泄露出去。

密码"correct"很弱-因此黑客可以使用字典bruteforce并快速找到它

如果你的服务器配置错误和/或有一些额外的软件(有漏洞(,黑客可以使用它通过浏览器访问你服务器上的文件。

我认为你的问题是理论性的,你知道明确存储你的用户密码是不好的——以防黑客收到用户的电子邮件时,他会做出很多"坏事",因为我认为许多用户在任何地方都使用他们的电子邮件密码。。。所以使用bcrypt是个好主意:(

最新更新