• 1119阅读
  • 2回复

从 Qt6 移除 FTP 说起 [复制链接]

上一主题 下一主题
离线20091001753
 

只看楼主 倒序阅读 楼主  发表于: 2022-12-16
大家平时难免有个需求:把文件上传到云服务器,而常用的方式是 FTP
但 Qt6 已经移除 FTP 支持了,好在 Qt6.4 加入了 QHttpServer
于是我用 QHttpServer 实现了简易的 FTP 功能,需要的代码量并不多。

其实我很早就想弃用 FTP,主要是不安全:
在不受信任的设备上,对方只要监听网络请求,就可以轻松看到 FTP 的账号密码,而且账密长期相对固定。

自己设计 FTP 方案的时候,身份认证的方式就可以自定义,我是这么做的:
对上传文件做一个类似MD5的运算,作为密码,云端验证密码后才会保存文件。
也就是说,不存在明文的账号密码,而且密码也会因为文件数据的不一样而不同,安全性大大提高了。
毕竟对方要破译加密算法才能成功上传文件,这个难度就显然大大提高。
(づ ̄ 3 ̄)づ
离线liudianwu

只看该作者 1楼 发表于: 2022-12-16
是个好办法
欢迎关注微信公众号:Qt实战/Qt入门和进阶(各种开源作品、经验整理、项目实战技巧,专注Qt/C++软件开发,视频监控、物联网、工业控制、嵌入式软件、国产化系统应用软件开发) QQ:517216493  WX:feiyangqingyun  QQ群:751439350
在线mengkun

只看该作者 2楼 发表于: 2022-12-17
使用 POST 上传,上传时附带上【时间戳】和唯一的 【token】
简易的 token 生成算法:将 密码(key) + 时间戳 + 文件MD5 组合成字符串,然后再 md5 加密这个字符串
这样,就算是同一份文件的上传,因为时间不一样,生成的 token 也是不一样的
服务端收到后,使用同样的方法也计算出 token,通过与客户端发上来的 token 做对比就能完成鉴权

更进一步,服务端也可以将客户端发上来的时间戳与服务器时间戳作对比,相差太久的可以认为是异常数据,可以抛弃
4条评分好评度+1贡献值+1金钱+10威望+1
20091001753 好评度 +1 - 2023-01-09
20091001753 贡献值 +1 - 2023-01-09
20091001753 威望 +1 - 2023-01-09
20091001753 金钱 +10 - 2023-01-09
快速回复
限100 字节
 
上一个 下一个