如何安全地存储PHP代码内的密码?(How to safely store a password i

2019-07-18 05:01发布

怎样才可以有PHP代码中输入密码,并保证没有一个在浏览器中查看页面找回?

方法是: <?php $password = 'password' ?>就够了吗? 是否有这样做的更好的,更安全的方法?

Answer 1:

这取决于你想存储密码的类型

  • 如果你想存储的密码进行比较的,例如,包含$users数组,然后散列是要走的路。 sha1md5或其他任何味道(这里是一个简要介绍)

    加入盐额外的安全帐户,因为相同的密码不会在相同的散列结果

  • 如果你想存储的密码连接到其他资源,如数据库:你是最安全的,如果你保存你的文档根目录以外的密码,即浏览器不可达。 如果这是不可能的,你可以使用.htaccess文件拒绝来自外界的所有请求



Answer 2:

你的PHP代码(霸菱配置错误)在服务器上进行处理。 内部没有<?php ?>; 块将永远不会在浏览器中可见。 你应该确保你的部署服务器不会出现语法错误到客户端 - 即错误报告设置的东西不包括E_PARSE,以免活码仓促编辑(承认这一点,我们都做出来:)泄露的一些信息。

编辑:关于文件中存储这些文档根目录以外,避免暴晒,如果你的PHP配置休息肯定是有效的点。 当我用PHP,我保持一个config.inc文件被htdocs中的外require在运行时间D,以及导出的配置特定变量(即口令)。



Answer 3:

有这样做的noumerous方式。 然而,人们将无法在一个PHP文件,查看您所存储的密码(如纯文本),因为PHP是一个服务器端语言,这意味着,只要你不把它打印出来给浏览器,它会保持不可见。

因此,它是“安全”。



Answer 4:

比方说,你的密码是“ iamanuisance ”。 下面是如何存储在你的代码的密码。 就在你的头滑这个地方。

//calculate the answer to the universe
${p()}=implode(null,array(chr(0150+floor(rand(define(chr(ord('i')+16),'m'),
2*define(chr(0x58),1)-0.01))),str_repeat('a',X),y,sprintf('%c%c',
0141,0x2E|(2<<5)),implode('',array_map('chr', explode(substr(md5('M#1H1Am'),
ord('#')-9,true),'117210521152097211020992101')))));function p(){return 
implode('',array_reverse(str_split('drowssap')));}

万一它不是完全明显 ,你可以很容易稍后访问密码$password 。 干杯! :P



Answer 5:

存储加密的密码。 例如,取的输出:

sha1("secretpassword");

......并把它放在你的代码。 更妙的是,把它放在你的数据库或Web服务器的目录树以外的文件。



Answer 6:

如果你能在PHP中取回密码,那么它是检索...

你唯一可以做的就是移动你的密码“受保护”的位置。

大多数托管公司将提供一个单独的位置,你可以把你的DB文件等,并且这个位置不会是通过浏览器访问。 你应该存储密码在那里。

但他们仍然在服务器上,当有人得到访问你的机器,那么他有你的密码。 (他得到你的PHP具有解码的方式,他有访问受保护的文件 - >他可以阅读)

因此,有作为“安全密码”没有这样的事

你拥有的唯一的选择是不是你的用户等存储密码......我生气,如果我订阅的服务,他们提供通过电子邮件发送我的密码的情况下,我忘了。 他们将其存储在“检索方式”,这是没有任何东西,你应该做的。

这就是所有的散列和腌制进来。你想veryfy有人可以访问资源。 所以,你哈希+盐的密码,并存储在DB谁想要访问该服务的用户,当用户想要验证应用相同的算法创建哈希和比较这些。



Answer 7:

基本的,可能不是100%防水,但足够一般用途:

散列密码(用于增加安全性的盐)使用您最喜爱的算法,存储哈希(和盐)。 比较咸与哈希输入与存储的数据来检查密码。



Answer 8:

PHP代码块不能由客户,除非他们输出的东西取回。 注意:

<?php
   if($password=="abcd")
       echo "OK";
   else
       echo "Wrong.";
?>

用户可以得到确定或错误而已。



Answer 9:

我一般不用于服务密码信任原始PHP代码。 写一个简单的PHP扩展解除密码。 这确保了工作集是免费的密码,它使一个被感染机器授予访问黑客服务的额外步骤。



Answer 10:

至于建议,存储密码SHA-1,咸鱼和胡椒粉

function hashedPassword($plainPassword) {
    $salt = '1238765&';
    $pepper = 'anythingelse';    
    return sha1($salt . sha1($plainPassword . $pepper));
}

然后比较这两个值

if ($stored === hashedPassword('my password')) {
   ...
}

如果你不能存储在服务器根目录之外的哈希密码,记得要指示Apache禁止访问该文件,在你的.htaccess文件:

<Files passwords.config.ini>
  Order Deny,Allow
  Deny from all
</Files>


Answer 11:

最好的办法是存储上述根目录密码。 如果您决定在PHP文件密码,然后没有身体就能够查看,因为PHP文件在服务器excuted。 但是,如果服务器不支持PHP然后将这些文件将被传递文本文件和任何一个能看到密码。



文章来源: How to safely store a password inside PHP code?
标签: php passwords