使用 Codeigniter,我如何向其他开发人员隐藏 Paypal 凭据?

Posted

技术标签:

【中文标题】使用 Codeigniter,我如何向其他开发人员隐藏 Paypal 凭据?【英文标题】:Using Codeigniter, how do I hide Paypal credentials from other developers? 【发布时间】:2013-01-15 01:25:17 【问题描述】:

在此处找不到很好的答案。

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

我使用 LAMP 堆栈。 CodeIgniter 框架。

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

【问题讨论】:

这高度依赖于您的平台、部署和配置。您可能应该包括该信息。作为旁注...如果您不能信任您的开发人员...我会更关心这一点。 @AdamGent 添加!。其他程序员都是外包的,所以我宁愿安全也不要后悔。 好吧,我希望您处理部署和生产服务器,否则他们将能够看到您的凭据 :) 是的,我正在处理所有事情。 【参考方案1】:

你可以:

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

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

     `EXPORT PAYPALPASSWORD=mypaypalpassword`


     `EXPORT PAYPALSIGNATURE=mypaypalsignature`

然后在你的代码中:

     $paypalusername = getenv(PAYPALUSERNAME);

最后在你的 README 中你会说:

     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 和/或 cmets,以便其他开发人员知道如何使用您的应用程序。

【讨论】:

你能详细说明第一部分吗?【参考方案2】:

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

首先,创建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)。只需确保以配置/加载器类的工作方式工作,就像人们期望它们工作的那样。

【讨论】:

【参考方案3】:

我通常会创建一些 config.example.ini.php 提交到 Git 存储库中。安装应用程序时,我将此文件复制到config.ini.php 并填写所有敏感数据。另外,.gitignore 包含config.ini.php,所以这个文件不会被误提交。

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

【讨论】:

【参考方案4】:

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

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

【讨论】:

【参考方案5】:

将您的凭据存储在配置文件中。看看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 沙箱凭据(如果您想签入配置文件)。

【讨论】:

以上是关于使用 Codeigniter,我如何向其他开发人员隐藏 Paypal 凭据?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用连接表向数据库添加记录 - codeigniter

如何在 PHP Codeigniter 中获取 40 岁以上的人员列表

Codeigniter:如何向受控(测试版)用户组推出功能?

如何在登录系统中使用会话并在codeigniter中实现注销

对网站进行单元测试

我现在应该在 codeigniter 中开发吗? [关闭]