Flask 使用用户密码而不以明文形式提供

Flask using password of user without providing it in clear text

我有一个 Flask 应用程序,我在其中登录到另一个需要登录数据的服务。所以我在烧瓶应用程序/服务中有我的端点,这个端点使用我目前以明文形式拥有的用户名和密码,意思是

@app.route('/service'), methods = ['GET','POST'])
def access_service(test: str):
   username = 'user1'
   password = 'passwordincleartext'
   req = 'https://anotherservice.com/'
   headers = {'Content-type': 'application/json'}
   HTTPAUTH = HTTPBasicAuth(username, password)
   my_data = '''{"myjsonfield":''' + test + '''}'''
   requests.get(req,headers=headers,data=my_data,auth=HTTPAUTH)

我的问题是我无法在请求中提供用户名和密码,因为另一个程序正在使用我的 flask 应用程序,而这个程序是一个外部程序,我无法在 /service 上操作请求。有没有办法安全地使用用户名和密码,这意味着不用明文,在烧瓶中,而不必创建数据库?

您的密码或任何登录凭据不应包含在您的代码中,因为使用 dot.env 之类的东西更可取且更安全,并且您将根据您的项目所在位置而不是项目位置来保留它以任何方式上传此文件,甚至不上传您的 github 存储库。请检查以下内容,这是对如何使用 dot.env

的简单明了的解释

https://dev.to/emma_donery/python-dotenv-keep-your-secrets-safe-4ocn

我建议您创建 2 个文件,其中一个对于每台机器都是本地的 运行 代码,另一个将与您的代码一起推送到 github,其中它仅显示变量名称,和下面的例子:

# .env file (local machine specific)
USERNAME=user1
PASSWORD=passwordincleartext
# example.env file (pushed with your code)
USERNAME=<ask-from-maintainer>
PASSWORD=<ask-from-maintainer>

注意:example.env 文件将不会在您的代码中使用,但如果您在不同的机器上 运行 将代码使用,则将需要它,这样就可以了您需要的是复制并粘贴文件,将其重命名为 .env 并使用正确的凭据替换变量值。这样,当您 运行 您的代码将在新环境中正常工作时,没有任何问题