存储数据库凭据 - PDO的最佳实践

时间:2014-02-26 01:39:52

标签: php mysql database pdo credentials

我正在寻找存储数据库凭据以便与PDO一起使用的最佳实践。 我的数据库存储在GoDaddy上,有几百个用户(也许)。 我最近从使用mysql_ *转换为PDO,经过大量谷歌搜索得到答案后,我得出结论,没有明确,简洁的方法存在。 目前,我使用config.inc文件将凭据存储为;

<?php
$strHostName = “10.10.10.10”; 
$strDbName = “dbname”;
$strUserName = “dbuser”;  
$strPassword = “xxx***xxx”;
?>

我在我的代码中执行以下操作;

<?
….stufff
require_once(‘config.inc’);

$db_found = new PDO("mysql:host=$strHostName;dbname=$strDbName;charset=utf8", $strUserName,     $strPassword, array(PDO::ATTR_EMULATE_PREPARES => false, 
              PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
…lots more stuff
?>

这很好但我关心config.inc文件的安全性。有没有一种首选方法可以做到这一点?

...谢谢

3 个答案:

答案 0 :(得分:1)

确保密码存储在无法读取或可从网络访问的文件中。

将密码存储在.php文件中会被视为安全,因为您无法从网络上看到.php文件的内容(只有它的输出)。

您还可以将文件存储在webroot之外,这样就无法从网络上访问该文件。

另一种解决方案是使用本机Web服务器忽略规则。以.开头的文件(如.password隐藏在某些网络服务器上。特别是Apache隐藏了以.ht开头的所有文件。这些依赖于网络服务器供应商,但要谨慎。

将密码存储在config.inc中会冒着在网页可访问的文件夹中意外暴露内容的风险。


您无需担心有人访问您的服务器并从文件中读取密码,因为您会遇到更大的问题:他们可以访问您的服务器:)

答案 1 :(得分:1)

我不确定这是如何工作的,因为我还没有尝试过,但是前几天才了解它,所以我想我会分享。

使用GoDaddy,您可以将主域名指向子目录,因此可以在其之前创建新的文档根目录。

例如,创建一个名为&#39; application&#39;的新目录。在根目录中,将应用程序的文件上传到那里并将域指向那里(您可能需要先删除域名,然后再将其添加到指定的目录中)。然后,您可以在新文档根目录之前包含文件(例如您的数据库凭据),现在这些文件对公众不可用,但可供您的应用程序使用。

新结构

数据库凭据:

/home/www/html/someSite/dbCredentials.php

您的网站(现在指向主域名):

/home/www/html/someSite/application/index.php

示例:

在dbCredentials.php中添加您的凭据:

<?php
$strHostName = “10.10.10.10”; 
$strDbName = “dbname”;
$strUserName = “dbuser”;  
$strPassword = “xxx***xxx”;
?>

在您的网页上,包含文件并正常使用变量:

<?php
require_once ('/home/www/html/someSite/dbCredentials.php');
$db_found = new PDO("mysql:host=$strHostName..........);
?>

<强>来源:

http://support.godaddy.com/help/article/4175/specifying-a-new-default-document-root-on-your-hosting-account?pc_split_value=4&countrysite=uk

如果您尝试一下,请告诉我它是怎么回事。

答案 2 :(得分:0)

您还可以将密码作为环境变量放置在托管服务器上,并使用php应用程序中的getenv读取密码。