我有敏感文件要下载给用户,每个用户只能下载给定文件一次。如果下载失败,我希望允许重新下载,但不允许其他方式。仅仅依靠在服务器上记录/处理文件下载请求是不够的-我需要确定性地知道文件何时完成以及在客户端是否就位,因为我的许多用户都在频繁掉线的环境中工作。最有效的方法是浏览器从“另存为...”对话框中暴露出一个“文件已保存”事件,该事件可能会链接到下载页面上的JavaScript函数(该事件可以发回到服务器上)。但是,直觉表明,如果浏览器公开了此功能,则可能会存在安全漏洞,因为它会在沙盒外潜入。我不确定这是否有可能。我在该领域中发现 了 其他 几个问题 ,但是对此问题一无所获。有任何想法吗?编辑:我不应该在原始问题中使用“安全性”一词,对不起触发红色鲱鱼。编辑2:我的“安全性”措辞误导了人们,使他们陷入离题的技术安全性问题,但是你们两个都证实了我的怀疑,即“不,对此没有浏览器支持”。我正在用答案标记第一位评论者,因为他的第一句话符合我的要求。谢谢大家
3 回答

哔哔one
TA贡献1854条经验 获得超8个赞
为什么可以“一次下载”文件很重要?一旦下载了文件,就可以将其复制,那么让同一位用户多次下载文件确实存在安全问题吗?
如果没有,您可以这样做吗?
生成唯一的URL以下载给定的文件。(如有必要,请使用GUID进行混淆)
将该URL与USER INFO(浏览器类型,IP地址等)和TIME WINDOW关联。仅允许从该用户和在窗口期间进行下载。
该窗口应足够长,以使用户注意到传输失败并重试一次或两次,但不再重试。
最终结果是:
您可以合理地确定文件仅由预期的收件人下载。
您可以确定收件人只能在短时间内下载文件。
同一用户可以多次下载文件,但是谁在乎呢?这与对第一个文件进行本地复制没有什么不同。
如果您真的很担心,请记录每个下载请求并为已下载多次的文件运行计划报告。如果发现有任何问题,则可以检查安全日志,与用户交谈等。
添加回答
举报
0/150
提交
取消