我有一个利用请求模块创建POST请求的脚本。
密码以纯文本形式存储在脚本中。
我担心这是公然不安全的,但我不确定如何让它更安全。
我可以采取哪些步骤来避免在脚本中以明文形式存储密码以提出请求?
#Set request parameters
url = 'https://apiexample.com/test'
#ISSUE: password is plain text
user = 'api_example'
pwd = 'plaintextnopes'
#Set proper headers
headers = {"Content-Type":"application/json","Accept":"application/json"}
#Build HTTP Request
response = requests.post(url=url, auth=(user, pwd), headers=headers ,data=j)
#Check for HTTP codes other than 200
if response.status_code != 200:
print('Status:', response.status_code, 'Headers:', response.headers, 'Response Text', response.text, 'Error Response:',response.json())
exit()
编辑: 该帐户是有权将记录写入数据库的系统用户,这是静态的,不会改变。
答案 0 :(得分:2)
假设此脚本以交互方式运行,您可以要求用户通过调用input()
或raw_input()
键入键盘上的密码(具体取决于您使用的Python版本)。< / p>
您可以将密码存储在一个单独的文件中,该文件并不完全安全,但可以让您在不共享密码的情况下共享脚本。
您可以获取用户名+密码的base64编码值,并将其直接包含在标题中,而不是通过auth=
参数传递它们。但是,这只能保护密码免受偶然的窥探者的攻击;可以很容易地从编码值重建用户名和密码。