我正在创建一个自定义存储页面来存储信息。
<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
答案 0 :(得分:1)
这里的问题是,如果有人访问您的源代码(如果您与其他用户/站点共享主机,这是一个主要风险)可以看到密码是什么。
存储密码的推荐方法是使用单向哈希 - 也就是说只存储密码的加密版本。这通常会以加密形式将密码存储在数据库中,然后您将使用相同的方法加密用户的输入,并检查加密的表单与数据库中的加密形式。
我不会扩展你使用数据库的答案,但这里静态设置,至少应该有助于解释我的意思:
8cb2237d0679ca88db6464eac60da96345513964
请注意,我在这里使用过sha1加密,除此之外还有plenty of others to choose from。另请注意,sha1("12345")
是add
返回的哈希值。
<强> 其他: 强>
如评论中所述,不再推荐使用sha1,我在这里使用它是为了简化语法;在生产环境中,请考虑使用password_hash with bcrypt。
希望这有帮助!