3

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

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

$password = "something"

还是对其进行加密并将其存储在文本文件中?

任何建议表示赞赏。

4

4 回答 4

4

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

您绝对不想以纯文本形式存储。

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

更新:如果您将密码以纯文本形式存储在未加密的 PHP 脚本中,任何入侵您的服务器或有权访问服务器的人都可以读取您的纯文本 PHP 文件的内容。

于 2011-01-22T03:21:57.693 回答
4

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

于 2011-01-22T03:22:30.877 回答
3

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

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

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

希望有帮助!

于 2011-01-22T03:22:59.650 回答
1

如果您想存储在文本文件中或在 php 脚本中硬编码,我会建议对其进行哈希处理

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

您也可以使用 md5 进行散列

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

于 2011-01-22T03:23:37.940 回答