【问题标题】:Python store password more securely via POST API requestPython 通过 POST API 请求更安全地存储密码
【发布时间】:2016-02-25 16:56:58
【问题描述】:

我有一个利用请求模块创建 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()

编辑: 账户是有权向数据库写入记录的系统用户,这是静态的,不会改变。

【问题讨论】:

    标签: python api security passwords python-requests


    【解决方案1】:

    假设此脚本以交互方式运行,您可以通过调用input()raw_input()(取决于您使用的 Python 版本)要求用户在键盘上输入密码。

    您可以将密码存储在单独的文件中,这并不完全安全,但可以让您在不共享密码的情况下共享脚本。

    您可以获取用户名+密码的 base64 编码值并将其直接包含在标头中,而不是通过 auth= 参数传递它们。然而,这只保护密码免受偶然的窥探;从编码值中重构用户名和密码很容易。

    【讨论】:

    • 账户是有权向数据库写入记录的系统用户,这是静态的,不会改变。我想我至少想将它存储在一个单独的文件中,并且标头中包含的 base64 编码值可能至少更安全一些。为了在标头中传递 base64 编码值而不是 auth 参数,语法会是什么样子?感谢您的建议!
    • headers = {..., 'Basic: %s' % b64encode('%s:%s' % (user, pwd))}
    猜你喜欢
    • 1970-01-01
    • 2020-07-20
    • 1970-01-01
    • 2012-03-16
    • 1970-01-01
    • 2017-03-23
    • 2012-05-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多