我正在尝试编写一个PHP登录脚本,并注意到以纯文本形式存储数据库paswords是不安全的。我的connect.php文件安全吗?如何在下面的connect.php文件中使用salt加密?
谢谢,很抱歉有一个基本的问题,我还是PHP的新手。
<?php
if(!defined('INCLUDE_CHECK')) die('You are not allowed to execute this file directly');
/* Database config */
$db_host = 'localhost';
$db_user = 'randomuser';
$db_pass = '123456';
$db_database = 'randomdatabase';
/* End config */
$link = mysql_connect($db_host,$db_user,$db_pass) or die('Unable to establish a DB connection');
mysql_select_db($db_database,$link);
mysql_query("SET names UTF8");
?>
我的connect.php文件安全吗?
在某种程度上——是的。
如何在下面的connect.php文件中使用salt加密?
您不能在connect.php中使用任何"salt加密"。请保持原样。
首先,我建议学习几篇关于加密、哈希和盐析的文章,以大致了解它的作用和不作用。
维基百科并不完全知道,但那里的文章涵盖了最相关的部分。
- http://en.wikipedia.org/wiki/Encryption
- http://en.wikipedia.org/wiki/Cryptographic_hash_function
- http://en.wikipedia.org/wiki/Salt_(密码学)
php脚本的密码通常不加密。最佳做法是将其存储在一个单独的配置文件(p.e.config.php)中。这样就由系统管理员来确保安全了。这不仅有助于您的安全,这样的外部配置文件还可以更容易地移植应用程序。大多数主要的php应用程序,从论坛引擎、CMS、日历等等,都使用这种架构。
它是安全的
这取决于您的托管提供商及其设置
对于安全的项目,我建议至少使用VDS。
也许还有其他答案。是的,据我所知,除了以明文形式存储数据库连接凭据之外,没有其他方法可以存储数据库连接证书。
也许你可以使用加密方案加密你的凭据,但如果攻击者可以访问你的文件(和你的加密方案),他们可以很容易地解密你加密的凭据。
只要您保持connect.php
的安全,它就是安全的。一些建议:
- 将
connect.php
放在Web服务器的根目录之外(您仍然可以从任何其他脚本中包含它),以防止HTTP访问 - 保持
php
,不要将文件重命名为任何其他扩展名,该扩展名将由Web服务器作为可视文本文件提供 - 如果您愿意,您可以使用一些
.htaccess
规则来保护您的connect.php
我的connect.php文件安全吗?
你可能想用ioncube加密你的connect.php。。。http://www.ioncube.com/。。。为了它仍然可以保护的东西。
我喜欢在我的.htaccess:中添加这样的东西
<files connect.php>
order allow,deny
deny from all
</files>