查看完整版本: [-- 从 Qt6 移除 FTP 说起 --]

QTCN开发网 -> Qt基础编程 -> 从 Qt6 移除 FTP 说起 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

20091001753 2022-12-16 00:21

从 Qt6 移除 FTP 说起

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

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

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

liudianwu 2022-12-16 08:36
是个好办法

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

更进一步,服务端也可以将客户端发上来的时间戳与服务器时间戳作对比,相差太久的可以认为是异常数据,可以抛弃


查看完整版本: [-- 从 Qt6 移除 FTP 说起 --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled