【问题标题】:.env File or a Config Class.env 文件或配置类
【发布时间】:2020-09-03 15:27:33
【问题描述】:

我是否有理由使用以下内容:

from flask import Flask
import stripe

class Config():
    STRIPE_SECRET_KEY = 'stripe-secret-key'

app = Flask(__name__)
app.config.from_object(Config)
stripe.api_key = app.config['STRIPE_SECRET_KEY']

而不是用export STRIPE_SECRET_KEY="stripe-secret-key" 填充.env 文件,然后使用:

from environs import Env
from flask import Flask
import stripe

env = Env()
env.read_env()
stripe.api_key = env.str('STRIPE_SECRET_KEY')

即为什么我不将所有环境变量存储在Config 类中,而不是.env 文件中?使用.env 文件是否更安全?

感谢您的帮助:-)

【问题讨论】:

    标签: python flask environment-variables config


    【解决方案1】:

    更安全。 config.py 是您代码的一部分,没有它您的应用程序将无法运行。因此,如果您发布应用程序的代码或与大学分享,您也应该分享config.py。但是你不应该发布你的 env 文件。当有人运行您的代码时,他们可以通过查看 config.py 中的变量轻松创建自己的 env 文件。这是告诉人们在您的应用中需要哪些配置变量的方式,而不会影响您自己的该应用实例的安全性。

    【讨论】:

      【解决方案2】:

      我可以看到三个理由可以证明使用.env

      1. 公约。 .env 是一个文件名,按照惯例存储环境变量

      2. 使用 class Config 使其特定于 Python 并且更难被其他语言解析

      但我认为最重要的原因是:

      1. .env 文件通常(默认情况下)包含在 .gitignore 文件中,可防止您意外提交(和推送)敏感信息

      【讨论】:

      • 获得您服务器访问权限的黑客能否找到您的 .env 文件并提取密码?即,如果您的目录结构是:server/app/ + server/.env + server/wsgi.py 任何人都可以看到 .env 文件的内容吗?或者您是否更改了文件的权限?
      • 取决于他们的访问级别和文件权限。如果该文件只能由您(即您的 linux 用户)读取,并且恶意用户使用其他人的身份访问了您的服务器 - 您应该是安全的。如果恶意用户可以访问root,那么您无能为力。
      猜你喜欢
      • 1970-01-01
      • 2021-03-21
      • 2019-06-19
      • 2022-11-16
      • 2019-05-11
      • 1970-01-01
      • 1970-01-01
      • 2021-10-16
      • 2021-03-31
      相关资源
      最近更新 更多