在这里找不到合适的答案。
所以基本上我使用bitbucket.org作为我的git系统。我的应用程序使用paypal凭据,如api用户名,密码,签名。从签出和处理我的代码的其他开发人员隐藏这些凭据的最佳和最安全的方法是什么?
我使用LAMP堆栈。 CodeIgniter框架。
我在想一个我没有添加到git的序列化文件,也把它放在实时服务器上,然后反序列化它并从中提取凭据。
答案 0 :(得分: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)
你可以:
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文件。
在任何一种情况下,都需要自述文件和/或评论,以便其他开发人员知道如何使用您的应用。
答案 2 :(得分: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沙箱凭据(如果您要签入配置文件)。
答案 3 :(得分:1)
我通常会创建一些提交到Git存储库的config.example.ini.php
。安装应用程序时,我将此文件复制到config.ini.php
并填写所有敏感数据。此外,.gitignore
包含config.ini.php
,因此不会意外提交此文件。
扩展名.ini.php
仅表示在第一行的注释中包含__halt_compiler();
的INI文件,因此对此文件的直接请求不会显示任何内容。要加载此文件,我使用parse_ini_file()
函数。
答案 4 :(得分:0)
查看CodeIgniter环境。你可以在localhost,development等目录中设置任何配置/文件,git忽略那些,然后只将沙盒信誉放入可见的文件夹
http://ellislab.com/codeigniter/user-guide/general/environments.html