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
看看浏览器是否报错。
我正在尝试制作一个脚本,通过 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
看看浏览器是否报错。