如何在没有数据库的情况下存储密码(PHP)?

时间:2011-01-22 03:16:34

标签: php password-storage

我希望有一个页面需要密码才能登录,但没有数据库。

我正考虑在页面中对其进行硬编码,即:

$password = "something"

或加密并将其存储在文本文件中?

感谢任何建议。

4 个答案:

答案 0 :(得分:4)

您可以使用PHP的md5加密库来加密密码,然后将其存储在文本文件中。由于md5不可逆,因此密码是安全的。

您绝对不希望以纯文本格式存储。

您也可以将密码存储在PHP文件中,但使用加密的哈希值。该文件的优点是数据与业务逻辑分离,这可以使添加数据库或稍微更容易使用多个用户/密码。

更新:如果您在未加密的PHP脚本中以纯文本格式存储密码,那么任何攻击服务器或有权访问服务器的人都可以读取纯文本PHP文件的内容。< / p>

答案 1 :(得分:4)

如果它不在数据库中,我倾向于将它存储在服务器webroot之外的文本文件中。如果你将它存储在php脚本中,并且服务器配置发生了某些事情,那么php脚本可能以纯文本形式提供,而不是通过php解析,因此密码是可见的。当然,在正常情况下,这不太可能发生,但这可能存在风险。对它进行加密可能有所帮助,但您还必须将解密密钥存储在某个地方,因此对某人进行解密只会带来轻微的不便。最好以密码格式(例如MD5或SHA-1)存储密码,使用相同的方法对用户输入的密码进行哈希处理,然后比较哈希值。

答案 2 :(得分:3)

你可以做其中任何一个。只需确保存储密码的哈希值,而不是真正的密码哈希值。这是非常简单的例子。

<?
    if(md5($_REQUEST['password']) == 'md5ofyourpasswordHERE'){
         //do your logged in page stuff here.
    } else {
         //kick them out or tell them to resupply password.
    }
?>

您也可以检查用户名,如果这对您很重要。

希望有所帮助!

答案 3 :(得分:1)

如果你想在文本文件中存储或在php脚本中硬编码,我会建议哈希吧

  • 首先echo sha1('your password');
  • 结果字符串(不可重复)复制并粘贴在脚本或文本文件中
  • 比较时使用if ( sha1($password) == '543f3fc32c232c32') ...

你也可以使用md5进行散列

这两种方法都是一种方式,所以“确保你会记住你的密码”