这种简单的登录安全吗?

时间:2018-11-08 21:47:51

标签: php security

<?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();
}}  
?>

除了有人访问您的Web服务器并查看密码外,还有没有其他人可以访问您的网站(例如黑客),并且看到“密码正确,您可以输入!”却不知道密码。

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

表面上,我只是想知道此登录是否安全?

4 个答案:

答案 0 :(得分:2)

我投票否。密码永远不要在代码库中,尤其是当您在git中跟踪代码时。使用环境变量或数据库。

这是一个很好的程序包,我使用了很多环境变量:

https://github.com/vlucas/phpdotenv

也不要将您的环境文件提交到您的仓库中。 :)

答案 1 :(得分:0)

我认为,如果您在代码中的某个位置对其进行硬编码,则与登录凭据有关的所有内容都会构成威胁。我宁愿使用诸如MySQL这样的数据库,该数据库具有md5哈希密码,没有人可以解码。

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

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

如果查询返回某些内容,则您有一个匹配项。如果没有,则显示错误消息。

答案 2 :(得分:0)

密码“正确”很弱-黑客可以使用dictionary-bruteforce并快速找到它

如果服务器的配置方式错误和/或有其他软件(带有错误),黑客可以使用它来通过浏览器访问服务器上的文件。

我认为您的问题是理论上的,并且您知道存储用户密码显式信息不好-如果黑客通过用户电子邮件向他们发送密码,那么他可能会做出许多“坏事”因为我认为许多用户到处都使用他们的电子邮件密码...所以使用bcrypt是个好主意:)

答案 3 :(得分:0)

否,这不是安全登录。不仅仅是因为您选择了密码。

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

但是,这是通过隐秘获得安全性。并且无效。

您想练习安全性中的层次。您应该假定黑客可以访问您的源代码。即使知道代码,也应阻止它们进入您的页面。

毕竟,您如何确定服务器不会被黑客入侵或放置在Github上的源代码没有被释放。或者,可能是实习生配置了错误的服务器,而Apache停止了对php的处理,仅输出了原始代码。即使发生所有这些事情,您也希望页面得到保护。

请记住,PHP具有password_verify函数,可用于检查密码。还有password_hash函数将更新用于帮助确保安全性的算法。

您不应在代码中对密码进行明文比较。您应该这样做,以使您无法分辨出密码是什么,以确保信息不会泄露。