gpt4 book ai didi

php - 关于用户名和密码安全

转载 作者:行者123 更新时间:2023-11-29 11:34:38 24 4
gpt4 key购买 nike

我正在制作一个自定义存储页面,用于存储信息。

<form  action="files/form.php" method="post">
<input type="text" name="username" placeholder="Username" value="" autocomplete="off">
<input type="password" name="password" placeholder="Password" value="" autocomplete="off">
<input name="submit" value="Send" type="submit"></input>
</form>

这是我将其设置为保存在 MySQL 数据库中的预制用户和密码的表单。发送表单后,它会转到

form.php 文件,其中包含用户输入信息的表单

<?php 
$user = $_POST["username"];
$pass = $_POST["password"];
?>
<?php if ($user == "Admin" && $pass == "12345"){ ?>
form.php content goes in here
<?php }else{ ?>
<span>Wrong password</span>
<?php } ?>

所以这里的主要问题是,这真的安全吗?或者我应该寻找更好的方法来做到这一点

我计划保持用户登录的方式是将$user$password保留在$_SESSION中,直到用户访问logout.php,这将清除SESSION

我的代码确实有效,没问题。

我只是想知道这是否安全?注意:用户密码是占位符,暂时不会是12345

最佳答案

这里的问题是,如果任何人想要访问您的源代码(如果您与其他用户/站点共享您的主机,这是一个重大风险)可以看到密码是什么。

存储密码的推荐方法是使用单向哈希 - 也就是说,仅存储密码的加密版本。这通常会将密码以加密形式存储在数据库中,然后您将加密(使用相同的方法)用户的输入,并根据数据库中的形式检查加密形式。

我不会扩展您的答案以使用数据库,但这里它是静态设置的,这至少应该有助于解释我的意思:

<?php 
$user = $_POST["username"];
$pass = $_POST["password"];
?>
<?php if ($user == "Admin" && sha1($pass) == "8cb2237d0679ca88db6464eac60da96345513964"){ ?>
//form.php content goes in here
<?php }else{ ?>
<span>Wrong password</span>
<?php } ?>

注意,我这里使用了sha1加密,有plenty of others to choose from除此之外还有。另请注意,8cb2237d0679ca88db6464eac60da96345513964sha1("12345") 返回的哈希值。

附加:

正如评论中提到的,不再推荐使用 sha1,为了语法简单起见,我在这里使用它;在生产环境中考虑使用 password_hash with bcrypt相反。

希望这有帮助!

关于php - 关于用户名和密码安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36827001/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com