根据问题,在php页面上存储密码是否安全
$password = 'pa$$w0rd';
如果用户看不到它,那就安全了吧?
编辑:有些人实际上建议使用哈希,但是,数据库服务器连接密码会出现问题,不是吗?
简短的回答是否定的,它取决于它.
如果没有其他原因,除了简单的服务器配置错误或错误的回声可能会将其暴露给世界之外,以纯文本形式存储密码几乎绝不是一个好主意,尤其是在可访问Web的位置.
如果您必须存储密码(可能),您可以尝试将其存储在webroot之外,例如
/var/www/public_html/
将您的codez
/var/www/includes/
放在这里将密码放在这里
比这更好的是让你需要密码的系统(例如数据库包装器)返回已经实例化的对象.所以不要求$databasepassword
你要求PDO对象,而是将数据库类存储在webroot之外.
It Depends来自哪些攻击向量会导致某人有权访问该密码文本,并且它是否需要它们已经在您的文件系统中,如果是这样,您可能无论如何都要搞砸了.
另外,如果它是你的supa-secrit订阅者内容的密码,meh,你丢失的只是一些订阅费,如果它是你的数据库,你可能有问题,如果这是你的网上银行细节,那对你有好处.
密码保护的价值有多大?
根据您如何定义安全,任何方法都有其积极和消极方面.
如果你真的想在你的源代码中存储密码,那么做一些这样的事情可能是个好主意:
文件:config.php
if( ! defined('IN_CODE') ) die( 'Hacking attempt' ); define( 'PASSWORD_HASH', '098f6bcd4621d373cade4e832627b4f6' );
文件:index.php
define( 'IN_CODE', '1' ); include( 'passwd.php' ); if( md5($password) == PASSWORD_HASH ) ...
纯文本永远不是一个好主意,始终存储您要存储的密码的哈希值.
此外,尝试从主源文件中分离这样的定义.
通常他们看不到它.但是如果在服务器上发生了不好的事情,那么服务器很可能会以纯文本形式返回你的php代码而不执行它,因此用户将看到该文件的所有来源以及你的密码.
我会将密码存储在文件根目录(不能在浏览器中打开)的某个地方,然后用php打开该文件并读取内容(密码).或者,如果您有多个密码/用户,我会将它们存储在数据库中以便快速访问.
如果你想使用文件方法目录布局应该看起来像这样(服务器上的depneds)
/public_html/index.php
/password.txt
$myFile = $_SERVER['DOCUMENT_ROOT'] + "/../password.txt"; if file_exists($myFile) { $fh = fopen($myFile, 'r'); $password = fgets($fh); fclose($fh); } else die("No password file"); if ($user_input == $password) { ...... Authentication succeeded .......... ......your relatively protected code ..... } else die("Wrong password");
如果您想要更高的安全性,而不是将密码存储为该文本文件中的文本.疼痛是哈希,然后当你想将它与用户输入进行比较时,从用户输入生成哈希值并将其与从文本文件加载的密码哈希值进行比较
sha1($user_input) == $password_from_txt