使用Codeigniter,我如何隐藏Paypal凭据以防其他开发人员看到?

3

在这里我希望能为您提供一些帮助。

基本上,我正在使用bitbucket.org作为我的git系统。我的应用程序使用PayPal凭据,如API用户名、密码、签名。那么,隐藏这些凭据以防止其他开发人员查看和处理我的代码的最佳且最安全的方法是什么呢?

我使用的是LAMP堆栈和CodeIgniter框架。

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


这高度取决于您的平台、部署和配置。您应该包含那些信息。顺便提一下……如果您不能信任您的开发人员……我对此会更加担忧。 - Adam Gent
@AdamGent 已添加!其他程序员都是外包的,所以我宁愿安全也不要抱有侥幸心理。 - CodeCrack
希望你能处理部署和生产服务器,否则他们将能够看到你的凭据 :) - Adam Gent
是的,我正在处理一切。 - CodeCrack
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)。只需确保以符合预期工作方式的方式执行配置/加载程序类即可。


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


你能详细说明一下第一部分吗? - CodeCrack

1

1
我通常创建一些名为config.example.ini.php的文件,并将其提交到Git存储库中。安装应用程序时,我将此文件复制到config.ini.php并填写所有敏感数据。此外,.gitignore包含config.ini.php,因此该文件不会被意外提交。
扩展名.ini.php只是表示这是一个INI文件,在第一行的注释中包含__halt_compiler();,因此对此文件的直接请求将不显示任何内容。要加载此文件,我使用parse_ini_file()函数。

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接