Php 带有简单if语句的密码
我很抱歉,如果这是一个重复,我试图寻找这个,并没有找到确切的我要找的 好吧,假设我有一个这样的代码Php 带有简单if语句的密码,php,security,if-statement,Php,Security,If Statement,我很抱歉,如果这是一个重复,我试图寻找这个,并没有找到确切的我要找的 好吧,假设我有一个这样的代码 <?php $user = $_POST['username']; $pass = $_POST['password']; if ($user == "admin" && $pass == "password") { echo "Password correct"; } else { echo "Password incorrect"; } ?> &
<?php
$user = $_POST['username'];
$pass = $_POST['password'];
if ($user == "admin" && $pass == "password")
{
echo "Password correct";
}
else
{
echo "Password incorrect";
}
?>
<?php
$user = $_POST['username'];
$pass = $_POST['password'];
if ($user == "admin" && $pass == "password")
{
include "correct.html";
}
else
{
echo "Password incorrect";
}
?>
这种用户名/密码验证方法的有效性如何?
我知道这不是最好的方法,但为什么不呢?有人怎么能破解这个
我见过这样的例子
<?php
$user = $_POST['username'];
$pass = $_POST['password'];
if ($user == "admin" && $pass == "password")
{
echo "Password correct";
}
else
{
echo "Password incorrect";
}
?>
<?php
$user = $_POST['username'];
$pass = $_POST['password'];
if ($user == "admin" && $pass == "password")
{
include "correct.html";
}
else
{
echo "Password incorrect";
}
?>
但我知道那会更糟,因为有人可以直接访问“correct.html”文件,绕过最初的安全检查。但是,通过使用echo,他们是否能够绕过用户名/密码检查?不要这样做。切勿将密码作为纯文本值进行比较 人们可以通过多种方式侵入支持您的代码的各种系统(Db、PHP等),密码散列的要点是如果您的数据库内容被共享,那么您的数据库用户就无法被入侵
- 如果密码是硬编码值,则只能手动更改
- 如果您的密码是硬编码值,并且您的文件以某种方式被复制/下载或类似,那么这可能会被共享和泄漏(老实说,在这种情况下,这会降低您的关注列表)
- 如果密码保存在数据库中,则需要对其进行哈希处理。请阅读密码哈希,因为它是PHP5中一个有用的PHP函数
User 1 of 2000:
name: Bob Dimond
email: diamondGeezer@gmail.com
password: rubmeup11
address: duke Town, illanois
黑客/攻击者可以尝试使用用户名和密码登录他们的gmail帐户,这可能会失败,也许他们的gmail帐户密码是rubmeup69
,但他们也可能有hotmail帐户diamondgeezer@hotmail.com
使用该密码。然后gmail会在忘记密码的例行程序中说,“将密码发送到另一个地址”,这可能是hotmail地址,因此在不知道gmail密码文本的情况下,攻击者绕过了安全性,因为您未能加密用户的详细信息
一旦进入他的gmail帐户,黑客就可以登录并获得所有东西的重置密码,如facebook、soundcloud等
对于2000个被盗帐户详细信息(假设),这种交叉验证方法的成功率约为7-9%,但我之前读过的一些报告提到,如果他们有脚本使用类似的文本密码(如
attempt 1 = rubmeup11
attempt 2 = RubmeUp11
attempt 3 = RubMeUp11
attempt 4 = rubmeup12
...
因此,你的失败可能会导致2000名用户中的200-250人妥协
上面的例子是一个简化的例子,但是你应该看到一种方法,它为黑客提供了一个经过验证的密码起点,这真的,真的减少了他们在其他系统上破解违规用户帐户的时间开销
这就是为什么你应该始终加密密码的原因我知道这是一种糟糕的做法。。我想知道的是,为什么它这么差?这仅仅是因为它没有散列,因此,如果获得未经授权的访问,可以查看密码吗?是的。我相信有很多关于这个主题的文章,试试这个:在原始问题/代码中,几乎唯一的漏洞就是缺少密码加密?从理论上讲,如果你以某种方式神奇地将
$pass==“password”
进入$pass==一个神奇的不可读/隐藏字符串那(理论上)安全吗?显然这是不可能的,我只是假设性地说来理解概念。缺乏良好的密码加密[哈希],是的。不要使用MD5或SHA,你想要河豚或类似的。