python 请求中的安全 PUT 身份验证

Safe PUT authentication in python requests

我正在尝试制作一个脚本,通过 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 状态代码作为响应,这意味着文件已经创建,但我觉得这样做很不安全。

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

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

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

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