gpt4 book ai didi

python - 如何安全地将密码发送到 REST 服务?

转载 作者:太空狗 更新时间:2023-10-29 20:27:33 24 4
gpt4 key购买 nike

我正在使用 Flask-Restful构建 REST 服务。然后,iOS 设备将连接到此 REST 后端以同步本地数据。

该服务将通过 https 连接访问。

REST 服务是无状态的,用户必须根据每个请求进行身份验证。因此,用户名和密码将以明文格式发送到 REST 服务。后端将散列密码并检查数据库中现有的散列密码。

api.add_resource(Records, '/rest/records/<string:email>/<string:password>/<string:ios_sync_timestamp>')

现在我发现这种方法的一个问题是用户名和密码作为 GET url 的一部分采用明文格式。服务器日志显然会跟踪这一点。现在,如果我的后端曾经被黑过,日志文件就会泄露所有用户名和密码。

最好的解决方案是什么?我在想也许可以将用户名和密码作为 POST 参数发送,但是我该如何使用 GET 请求呢?

class Records(Resource):
def get(self, email, password, ios_sync_timestamp):
pass
def post(self, email, password, ios_sync_timestamp):
pass

最佳答案

要像您希望的那样使用用户名和密码对每个请求进行身份验证,您应该使用:Basic Authentication .

要使用它,它非常简单,并且适用于所有 HTTP 方法(GET、POST 等)。您只需要在请求中添加一个 HTTP header :

Authorization: Basic <...>

<...>部分是 username:password以 base64 编码。

例如,如果您的登录名是 foo你的密码是bar . HTTP header 应包含这一行:

`Authorization: Basic Zm9vOmJhcg==`

通过您的 HTTPS 连接,它是安全的。

编辑:使用 Flask,您可以使用 Flask HTTP auth以“自动”实现这一目标。

关于python - 如何安全地将密码发送到 REST 服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19514538/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com