怎样才可以有PHP代码中输入密码,并保证没有一个在浏览器中查看页面找回?
方法是: <?php $password = 'password' ?>
就够了吗? 是否有这样做的更好的,更安全的方法?
怎样才可以有PHP代码中输入密码,并保证没有一个在浏览器中查看页面找回?
方法是: <?php $password = 'password' ?>
就够了吗? 是否有这样做的更好的,更安全的方法?
这取决于你想存储密码的类型 。
如果你想存储的密码进行比较的,例如,包含$users
数组,然后散列是要走的路。 sha1
, md5
或其他任何味道(这里是一个简要介绍)
加入盐额外的安全帐户,因为相同的密码不会在相同的散列结果
如果你想存储的密码连接到其他资源,如数据库:你是最安全的,如果你保存你的文档根目录以外的密码,即浏览器不可达。 如果这是不可能的,你可以使用.htaccess
文件拒绝来自外界的所有请求
你的PHP代码(霸菱配置错误)在服务器上进行处理。 内部没有<?php ?>;
块将永远不会在浏览器中可见。 你应该确保你的部署服务器不会出现语法错误到客户端 - 即错误报告设置的东西不包括E_PARSE,以免活码仓促编辑(承认这一点,我们都做出来:)泄露的一些信息。
编辑:关于文件中存储这些文档根目录以外,避免暴晒,如果你的PHP配置休息肯定是有效的点。 当我用PHP,我保持一个config.inc文件被htdocs中的外require
在运行时间D,以及导出的配置特定变量(即口令)。
有这样做的noumerous方式。 然而,人们将无法在一个PHP文件,查看您所存储的密码(如纯文本),因为PHP是一个服务器端语言,这意味着,只要你不把它打印出来给浏览器,它会保持不可见。
因此,它是“安全”。
比方说,你的密码是“ 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
存储加密的密码。 例如,取的输出:
sha1("secretpassword");
......并把它放在你的代码。 更妙的是,把它放在你的数据库或Web服务器的目录树以外的文件。
如果你能在PHP中取回密码,那么它是检索...
你唯一可以做的就是移动你的密码“受保护”的位置。
大多数托管公司将提供一个单独的位置,你可以把你的DB文件等,并且这个位置不会是通过浏览器访问。 你应该存储密码在那里。
但他们仍然在服务器上,当有人得到访问你的机器,那么他有你的密码。 (他得到你的PHP具有解码的方式,他有访问受保护的文件 - >他可以阅读)
因此,有作为“安全密码”没有这样的事
你拥有的唯一的选择是不是你的用户等存储密码......我生气,如果我订阅的服务,他们提供通过电子邮件发送我的密码的情况下,我忘了。 他们将其存储在“检索方式”,这是没有任何东西,你应该做的。
这就是所有的散列和腌制进来。你想veryfy有人可以访问资源。 所以,你哈希+盐的密码,并存储在DB谁想要访问该服务的用户,当用户想要验证应用相同的算法创建哈希和比较这些。
基本的,可能不是100%防水,但足够一般用途:
散列密码(用于增加安全性的盐)使用您最喜爱的算法,存储哈希(和盐)。 比较咸与哈希输入与存储的数据来检查密码。
PHP代码块不能由客户,除非他们输出的东西取回。 注意:
<?php
if($password=="abcd")
echo "OK";
else
echo "Wrong.";
?>
用户可以得到确定或错误而已。
我一般不用于服务密码信任原始PHP代码。 写一个简单的PHP扩展解除密码。 这确保了工作集是免费的密码,它使一个被感染机器授予访问黑客服务的额外步骤。
至于建议,存储密码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>
最好的办法是存储上述根目录密码。 如果您决定在PHP文件密码,然后没有身体就能够查看,因为PHP文件在服务器excuted。 但是,如果服务器不支持PHP然后将这些文件将被传递文本文件和任何一个能看到密码。