【发布时间】:2020-05-18 02:44:27
【问题描述】:
我正在使用一个名为SpaceTrackTools 的python API 模块。但是,它要求脚本将密码和用户名作为变量存储在脚本中。我想知道是否有更安全的方法来保存详细信息?
谢谢。
【问题讨论】:
-
你熟悉keyring吗?
我正在使用一个名为SpaceTrackTools 的python API 模块。但是,它要求脚本将密码和用户名作为变量存储在脚本中。我想知道是否有更安全的方法来保存详细信息?
谢谢。
【问题讨论】:
您可以使用keyring 将您的用户名和密码存储在脚本之外。命令行界面允许您获取、设置或删除存储的密码。您可以将用户名存储为密码以确保其安全。
$ keyring --help
Usage: keyring [get|set|del] SERVICE USERNAME
Options:
-h, --help show this help message and exit
-p KEYRING_PATH, --keyring-path=KEYRING_PATH
Path to the keyring backend
-b KEYRING_BACKEND, --keyring-backend=KEYRING_BACKEND
Name of the keyring backend
--list-backends List keyring backends and exit
--disable Disable keyring and exit
从命令行设置服务的用户名和密码。
$ keyring set spacetracktools username
Password for 'username' in 'spacetracktools':
$ keyring set spacetracktools password
Password for 'password' in 'spacetracktools':
import keyring
# get username and password from keyring
username = keyring.get_password("spacetracktools", "username")
password = keyring.get_password("spacetracktools", "password")
print("My username is:", username)
print("My password is:", password)
【讨论】:
一种选择是使用dotenv。
这样您可以将您的私人详细信息保存在一个名为 .env 的单独文件中。
然后您在运行时读取脚本中的私人详细信息。
例如:
文件 .env 值:
USERNAME=MyUserName
PASSWORD=Spec!alP@ssw0rd*19?
脚本用法:
import os # also need os
from dotenv import load_dotenv
load_dotenv() # blank if .env file in same directory as script
# load_dotenv('<path to file>.env') to point to another location
USERNAME = os.getenv('USERNAME')
PASSWORD = os.getenv('PASSWORD')
# your code
【讨论】:
要添加到 .env 方法,请确保您设置了 .gitignore 文件,以便 git 不会在 repo 中包含 .env 文件。你可以在 Github gitignore repo here找到一个用于 python 的 .gitignore 文件
【讨论】: