PHP初学者尝试使用Salt加密


Beginner PHP learner trying to use Salt encryption

我正在尝试编写一个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>