我正在寻找一个存储数据库凭据的最佳实践,以便与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文件的安全性。有没有更好的方法来做到这一点?
谢谢…
发布于 2014-06-05 08:32:49
我不确定它是如何工作的,因为我还没有尝试过,但有一天我了解了它,所以我想我应该分享一下。
使用GoDaddy,您可以将主域名指向一个子目录,因此可以在它之前创建一个新的文档根目录。
例如,在根目录中创建一个名为'application‘的新目录,在那里上传应用程序的文件,并将您的域指向那里(您可能需要先删除域名,然后使用指定的目录重新添加它)。然后,您可以在新文档根目录之前包含文件-例如,您的数据库凭据。新文档根目录现在对公众不可用,但对您的应用程序可用。
新结构
数据库凭据:
/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”;
?>在您的web页面上,正常包含文件和使用变量:
<?php
require_once ('/home/www/html/someSite/dbCredentials.php');
$db_found = new PDO("mysql:host=$strHostName..........);
?>来源:
如果你尝试过,请让我知道它的进展。
发布于 2014-02-26 09:47:36
确保密码存储在不可读或可从web访问的文件中。
将密码存储在.php文件中被认为是安全的,因为您无法从web查看.php文件的内容(只能看到其输出)。
您还可以将文件存储在webroot之外,这会使web完全无法访问该文件。
另一种解决方案是使用本地the服务器忽略规则。以.password之类的.开头的文件在某些with服务器上是隐藏的。具体地说,Apache会隐藏所有以.ht开头的文件。不过,这些依赖于webserver服务器供应商,所以要小心。
将密码存储在config.inc中会冒着意外暴露内容的风险,而这些内容位于web可访问的文件夹中。
您不必担心有人访问您的服务器并从文件中读取密码,因为您会遇到更大的问题:他们可以访问您的服务器:)
发布于 2018-08-07 23:50:49
您也可以将密码作为环境变量放在托管服务器上,然后使用php应用程序中的getenv来读取密码。
https://stackoverflow.com/questions/22029996
复制相似问题