首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >存储数据库凭据- PDO的最佳实践

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

Stack Overflow用户
提问于 2014-02-26 09:39:52
回答 3查看 2.9K关注 0票数 3

我正在寻找一个存储数据库凭据的最佳实践,以便与PDO一起使用。我的数据库存储在GoDaddy上,有几百个用户(可能)。我最近从使用mysql_*转换到了PDO,在谷歌了很多次之后,我得出了一个结论,没有清晰、简洁的方法存在。目前我使用的是config.inc文件,它将凭据存储为;

代码语言:javascript
复制
<?php
$strHostName = “10.10.10.10”; 
$strDbName = “dbname”;
$strUserName = “dbuser”;  
$strPassword = “xxx***xxx”;
?>

我在我的代码中做了以下事情;

代码语言:javascript
复制
<?
….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文件的安全性。有没有更好的方法来做到这一点?

谢谢…

EN

回答 3

Stack Overflow用户

发布于 2014-06-05 08:32:49

我不确定它是如何工作的,因为我还没有尝试过,但有一天我了解了它,所以我想我应该分享一下。

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

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

新结构

数据库凭据:

代码语言:javascript
复制
/home/www/html/someSite/dbCredentials.php

你的网站(主要域名现在指向的地方):

代码语言:javascript
复制
/home/www/html/someSite/application/index.php

示例:

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

代码语言:javascript
复制
<?php
$strHostName = “10.10.10.10”; 
$strDbName = “dbname”;
$strUserName = “dbuser”;  
$strPassword = “xxx***xxx”;
?>

在您的web页面上,正常包含文件和使用变量:

代码语言:javascript
复制
<?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
EN

Stack Overflow用户

发布于 2014-02-26 09:47:36

确保密码存储在不可读或可从web访问的文件中。

将密码存储在.php文件中被认为是安全的,因为您无法从web查看.php文件的内容(只能看到其输出)。

您还可以将文件存储在webroot之外,这会使web完全无法访问该文件。

另一种解决方案是使用本地the服务器忽略规则。以.password之类的.开头的文件在某些with服务器上是隐藏的。具体地说,Apache会隐藏所有以.ht开头的文件。不过,这些依赖于webserver服务器供应商,所以要小心。

将密码存储在config.inc中会冒着意外暴露内容的风险,而这些内容位于web可访问的文件夹中。

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

票数 1
EN

Stack Overflow用户

发布于 2018-08-07 23:50:49

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22029996

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档