Django-payments:如何保密秘密密钥?

时间:2015-03-30 16:50:16

标签: django

我正在使用库Django-payments,并希望将Paypal,Stripe,...密钥保持在视线之外。

如何隐藏密钥,并且没有在DEBUG页面(设置部分)中清除?

PAYMENT_VARIANTS    
{'stripe': ('payments.stripe.StripeProvider',
            {'public_key': 'pk_test_i7RTWcR0w8aK3KZB2yEfeGVi',
             'secret_key': 'sk_test_k4aH2sWIisUK0TqtPwdUmJ6o'})}

隐藏了其他一些密码:

SECRET_KEY  u'********************'

生产环境设置为DEBUG = False。但是测试env将允许dev和qa团队中的任何人获得密钥。

将密钥从settings.py移动到环境变量的其他帖子建议。我做了什么:

if os.environ.get("STRIPE_SECRET_KEY"):
    PAYMENT_VARIANTS = {
        'stripe': ('payments.stripe.StripeProvider', {
            'secret_key': os.environ.get("STRIPE_SECRET_KEY"),
            'public_key': 'pk_test_k4aH2sWIisUK0TqtPwdUmJ6o'}),
    }
else:
    PAYMENT_VARIANTS = {
        'stripe': ('payments.stripe.StripeProvider', {
            'secret_key': 'sk_test_i7RTWcR0w8aK3KZB2yEfeGVi',
            'public_key': 'pk_test_k4aH2sWIisUK0TqtPwdUmJ6o'}),
    }

将KEYS放在环境变量中没有帮助,因为它仍然会出现在这里。

谢谢!

Ps:这些不是实际的密钥。

3 个答案:

答案 0 :(得分:4)

Django automatically hides settings如果它们包含以下任何字词:

API
TOKEN 
KEY
SECRET
PASS
SIGNATURE 

您的设置没有设置,因此不会隐藏,但您可以轻松将其更改为SECRET_PAYMENT_VARIANTS或其他内容。

答案 1 :(得分:1)

创建一个文本文件并将密钥保存在其中。使用python代码阅读它,这样您就不需要将它保存在settings.py中。通过排除其他所有人,仅在Web服务器上为项目用户分配对文本文件的“READ”访问权限。但请确保它属于项目用户的所有权,因此您的django文件可以在生产中访问它。如果不满意,请提供有关生产环境的详细信息以获得相应的答案。

答案 2 :(得分:0)

Django会隐藏属性名称或键包含任何certain set of words的内容。不幸的是,这组单词是硬编码的,区分大小写。我认为你的应用程序不能使用secret_keypublic_key的大写键。

我猜stripe是您可以更改的密钥。您需要使用大写的密钥,例如STRIPE_KEYS,字典将隐藏在调试视图中。