3

在这里找不到很好的答案。

所以基本上我使用 bitbucket.org 作为我的 git 系统。我的应用程序使用 api 用户名、密码、签名等贝宝凭据。什么是最好和最安全的方法来向其他将检查并处理我的代码的开发人员隐藏这些凭据?

我使用 LAMP 堆栈。CodeIgniter 框架。

我正在考虑拥有一个不添加到 git 的序列化文件,将其也放在实时服务器上,然后对其进行反序列化并从中提取凭据。

4

5 回答 5

5

您不必与处理数据库配置文件有任何不同的处理方式。

首先,创建application/config/paypal.php

// Change this information to match your settings
//$config['paypal_seekrit'] = '';
// whatever else

请注意,就像这样创建它,因为您最初将其作为存根进行跟踪。添加并提交:

git add application/config/paypal.php
git commit

现在,将其添加到.gitignore本地不再对其进行跟踪。添加并提交.gitignore. 然后,在您的代码中,您需要执行以下操作以确保人们记得正确设置:

$this->load->config('paypal');
$seekrit = $this->config->item('paypal_seekrit');
if ($seekrit === FALSE) {
    // config->item returns FALSE by default if item doesn't exist
    log_message('error', 'You need to configure config/paypal.php!');
    // bail out, if appropriate
    show_error('Paypal keys have not been configured');
}

这个时候就可以推了。现在每个人都有一个文件存根,任何人在他们最后做的任何事情都不会有被推回的危险。缺点是,如果您需要更改默认存根以添加或删除选项,您(和其他所有人)将需要合并。但是,这是一个微不足道的文件,我不认为这是一个问题。

然后,将您的密钥添加到文件中,而不必担心意外提交和推送它们。请注意,如果在库中使用它,您首先必须调用get_instance()以获取框架超级对象(单例),例如:

$CI = get_instance();
$CI->load->config('paypal');
$seekrit = $CI->config->item('paypal_seekrit');
...

我在一个新的 CI 项目上做的第一件事就是提交application/,然后停止跟踪application/config.

您也可以只为覆盖所有先前加载的配置的站点特定设置创建一个捕获所有配置文件并将其粘贴在那里(类似于config/appname.php)。只要确保以配置/加载器类工作的方式进行,就像有人期望它们工作一样。

于 2013-01-31T03:51:25.930 回答
1

将您的凭据存储在配置文件中。看看PHP的parse_ini_file函数: http: //php.net/manual/en/function.parse-ini-file.php

由于您使用的是 codeigntor,您还可以使用:http ://ellislab.com/codeigniter/user-guide/libraries/config.html

然后,您可以拥有生成配置文件的各种构建脚本,或使用 PayPal 沙箱凭据(如果您想签入配置文件)。

于 2013-01-31T02:38:34.173 回答
1

你可以:

1)使用您在本地设置的环境变量,并且仅通过代码中的环境变量名称引用它们。

根据要求详细说明:您可以通过 .bashrc 等在本地设置环境变量,使用: EXPORT PAYPALUSERNAME=mypaypalusername

     `EXPORT PAYPALPASSWORD=mypaypalpassword`


     `EXPORT PAYPALSIGNATURE=mypaypalsignature`

然后在您的代码中:

     $paypalusername = getenv(PAYPALUSERNAME);

最后在你的自述文件中你会说:

     This code sets the username based on your PAYPALUSERNAME environment variable, please make sure to set it in your code 

2)使用某种配置语言(想到yml),设置你的api凭据,设置你的代码来读取/解析配置文件,而不是签入yml文件。

无论哪种情况,都需要 README 和/或注释,以便其他开发人员知道如何使用您的应用程序。

于 2013-01-31T02:22:17.177 回答
1

我通常会创建一些config.example.ini.php提交到 Git 存储库中的内容。安装应用程序时,我将此文件复制到config.ini.php并填写所有敏感数据。此外,.gitignorecontains config.ini.php,因此该文件不会被意外提交。

扩展名.ini.php仅意味着它是包含__halt_compiler();在第一行注释中的 INI 文件,因此对该文件的直接请求将不会显示任何内容。要加载此文件,我使用parse_ini_file()函数。

于 2013-01-31T03:58:52.507 回答
0

查看 CodeIgniter 环境。您可以在本地主机、开发等目录中设置任何配置/文件,git 忽略这些,然后将沙箱凭据放入可见的文件夹中

http://ellislab.com/codeigniter/user-guide/general/environments.html

于 2013-01-31T03:40:22.567 回答