Php 这个简单的登录安全吗?

Php 这个简单的登录安全吗?,php,security,Php,Security,我投反对票。密码永远不应该存在于代码库中,尤其是当您正在跟踪git中的代码时。使用环境变量或数据库 这是一个很好的包,我使用了很多环境变量加载: 也不要将您的env文件提交给您的repo。:) 我认为,如果您在代码中的某个地方硬编码,那么与登录凭据相关的所有内容都会构成威胁。我更愿意使用一个数据库,比如MySQL,它有一个md5哈希密码,没有人能解码 一种很好的方法是在数据库中搜索用户名和密码,看看它们是否匹配: <?php if (!empty($_POST['password'])

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

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


也不要将您的env文件提交给您的repo。:)

我认为,如果您在代码中的某个地方硬编码,那么与登录凭据相关的所有内容都会构成威胁。我更愿意使用一个数据库,比如
MySQL
,它有一个md5哈希密码,没有人能解码

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

<?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();
}}  
?>
如果查询返回某个内容,则您有一个匹配项。如果没有,则打印错误消息。

密码“正确”很弱-因此黑客可以使用字典暴力并快速找到它

如果您的服务器配置错误和/或具有som附加软件(带有bug),黑客可以使用它通过浏览器访问服务器上的文件


我假设你的问题是理论性的并且你意识到明确地存储你的用户密码是不好的-如果黑客通过用户的电子邮件获得他们,那么他会做出很多“坏事”,因为我认为很多用户在任何地方都使用他们的电子邮件密码。。。所以使用
bcrypt
是个好主意:)

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

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

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

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

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

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


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

“正确”是硬编码密码吗?
类似SSL攻击之类的东西
暴力攻击或字典攻击怎么样,“类似的东西”md5哈希密码中是否包含了这些内容请不要推荐这种糟糕的做法。你是对的,不推荐使用简单的md5(密码),因为我的回答含糊不清。我在比较硬编码密码和md5。建议始终使用附加密码。PHP在5.5版中添加了密码函数,这有助于防止您对密码使用过时的哈希算法。我想你不明白。MD5本身被认为是不好的做法。是的,您应该散列您的密码,但您永远不应该使用MD5,因为它现在是不安全的。
SELECT username,password FROM users WHERE username='username' AND password='password'