2011-01-22 73 views
4

我想要一个页面,需要密码登录,但没有数据库。如何在没有数据库(PHP)的情况下存储密码?

我想有它的页面硬编码的,即:

$password = "something" 

或加密,并将其存放在一个文本文件?

任何意见表示赞赏。

+0

另外 - 有人可以告诉我为什么在PHP脚本本身硬编码它是不安全的,因为没有人可以查看源代码? – sqram 2011-01-22 03:23:21

+0

我的回答解决了至少一个可能导致这种情况的情况。 – 2011-01-22 03:24:35

回答

4

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

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

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

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

4

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

3

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

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

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

希望有帮助!

1

如果你想在文本文件中存储或PHP脚本硬编码,我会recomended哈希它

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

你也可以使用MD5散列为

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

相关问题