首页 > 解决方案 > python请求中的安全PUT身份验证

问题描述

我正在尝试制作一个通过 webdav 将文件上传到 nextcloud 服务器的脚本。文档说这可以使用 PUT HTTP 请求来完成,如下所示:

import requests

url = "https://example.com/path/to/file.txt"
file = open("file/to/upload.txt")

response = requests.put(url, auth=(user, passwd), data=file)

这工作得很好,我得到一个201状态码作为响应,这意味着文件已经创建,但我觉得这样做很不安全。

如果网络具有有效的 SSL 证书,我可以添加参数verify=True以确保文件被加密发送,但我不知道身份验证凭据是否也被加密。

如果他们不是,我如何在不泄露密码的情况下安全地提出请求?

标签: pythonhttprequestwebdavnextcloud

解决方案


您正在输入一个以开头的 url,https因此您通过 TLS 发出请求,如果您拥有良好的证书,这是安全的。如果你有一个好的证书,你的用户名和密码也将通过 TLS 发送并且是安全的。

要确定您的证书是否良好,请尝试openssl s_client -showcerts -connect example.com:443从命令行运行并检查它是否报告Verify return code: 0 (ok)或尝试打开浏览器并输入https://example.com并查看浏览器是否抱怨。


推荐阅读