在这里我希望能为您提供一些帮助。
基本上,我正在使用bitbucket.org作为我的git系统。我的应用程序使用PayPal凭据,如API用户名、密码、签名。那么,隐藏这些凭据以防止其他开发人员查看和处理我的代码的最佳且最安全的方法是什么呢?
我使用的是LAMP堆栈和CodeIgniter框架。
我的想法是创建一个序列化文件,不将其添加到git中,同时也将其放在实际服务器上,然后对其进行反序列化并从中提取凭据。
在这里我希望能为您提供一些帮助。
基本上,我正在使用bitbucket.org作为我的git系统。我的应用程序使用PayPal凭据,如API用户名、密码、签名。那么,隐藏这些凭据以防止其他开发人员查看和处理我的代码的最佳且最安全的方法是什么呢?
我使用的是LAMP堆栈和CodeIgniter框架。
我的想法是创建一个序列化文件,不将其添加到git中,同时也将其放在实际服务器上,然后对其进行反序列化并从中提取凭据。
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)在代码中仅使用环境变量名称引用本地设置的环境变量。
根据要求进行详细说明:您可以通过 .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和/或注释,以便其他开发人员知道如何使用您的应用程序。
parse_ini_file
函数:http://php.net/manual/en/function.parse-ini-file.php
由于您正在使用CodeIgniter,因此还可以使用:http://ellislab.com/codeigniter/user-guide/libraries/config.html
然后,您可以拥有一个生成配置文件的构建脚本,或使用PayPal沙箱凭据(如果要检查配置文件)。config.example.ini.php
的文件,并将其提交到Git存储库中。安装应用程序时,我将此文件复制到config.ini.php
并填写所有敏感数据。此外,.gitignore
包含config.ini.php
,因此该文件不会被意外提交。.ini.php
只是表示这是一个INI文件,在第一行的注释中包含__halt_compiler();
,因此对此文件的直接请求将不显示任何内容。要加载此文件,我使用parse_ini_file()
函数。看看CodeIgniter环境。你可以在本地主机、开发等目录中设置任何config/文件,将它们git ignore,然后只需将沙盒凭据放入可见的文件夹中。
http://ellislab.com/codeigniter/user-guide/general/environments.html