python - 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
以确保文件被加密发送,但我不知道身份验证凭据是否也被加密。
如果他们不是,我如何在不泄露密码的情况下安全地提出请求?
解决方案
您正在输入一个以开头的 url,https
因此您通过 TLS 发出请求,如果您拥有良好的证书,这是安全的。如果你有一个好的证书,你的用户名和密码也将通过 TLS 发送并且是安全的。
要确定您的证书是否良好,请尝试openssl s_client -showcerts -connect example.com:443
从命令行运行并检查它是否报告Verify return code: 0 (ok)
或尝试打开浏览器并输入https://example.com
并查看浏览器是否抱怨。
推荐阅读
- google-chrome-extension - 在不连接到服务器的情况下替换 Chrome 选项卡内容
- bash - 通过作为参数传递的命令对循环变量的 Bash 访问
- javascript - 在 js/jquery 中更改 iframe 的宽度/高度
- azure-application-insights - 如何更改 Application Insights 数据中的自定义属性名称
- javascript - 如何使用 Cloud Functions 更新 Firebase 实时数据库中的数据?
- django - 动作属性的 url 设置发生错误
- erlang - 是什么导致 Erlang 运行时错误 {undef,[{rand,uniform,[2],[]},...]}?
- javascript - 有什么办法可以提高网页的渲染速度?
- r - 删除自定义字符串并转换科学计数法
- python-3.x - 遗传算法的“独特”交叉 - TSP