【问题标题】:Allow logout while multiple large files are uploaded上传多个大文件时允许注销
【发布时间】:2010-11-03 11:43:24
【问题描述】:

我被要求实现一个文件上传程序。该程序是一个 Java Web Start 应用程序,负责将 CD 的内容上传到 Web 应用程序。这里有两个要求:

  1. 上传器应在后台以最少的交互操作(无丰富的 GUI)。
  2. 用户可能不想观看正在上传的文件。用户应该能够在上传程序仍在运行时从系统中注销。即使用户退出,上传者也必须继续。

我的直觉是,#2 充其量是不安全的,最坏的情况是不可能的。基本上,要实现这样的用例,您需要为上传者创建一个新的会话 ID;独立于原始会话,并且没有用户密码。

有人有类似的用例吗?如果是这样,你采取了什么方法?

【问题讨论】:

  • “用户退出”是什么意思?
  • 用户注销 = 会话 ID 无效,这样用户在返回时必须重新登录。

标签: java security file-upload


【解决方案1】:

我不知道为什么即使用户注销也很复杂。

会话在登录时启动,会话 ID 已分配。

用户开始上传文件名中包含会话 ID 信息的文件。 例如session_id_user_name.DAT

用户退出

文件已完成,主机上的后台进程根据会话 ID 识别信息,将文件移动到位置。

用户稍后重新登录

文件已被识别并与帐户相关联。

安全不是问题,因为文件流自启动以来仍在进行中。一旦用户重新登录,会话信息可以被序列化和反序列化。在任何情况下,文件流都可以完全无人看管地运行。

也许我把它过分简化了,但看起来很简单。

【讨论】:

  • 对于我们的上传过程,我们正在流式传输 CD 的内容.... 这是许多文件(每个文件的服务器端往返)。所以每次新的上传都需要一个有效的会话。
  • 我们将其与会话而非用户 ID 相关联是否有原因?您应该能够轻松地附加 user_id 信息,甚至是该 user_id 的特定上传文件夹。对我来说,会话​​信息似乎完全没有必要。用户重新登录后,他们可以查看文件列表并接受或拒绝上传。如果安全是问题,执行上传的程序可以在第一次上传开始时获得一个令牌。然后可以将令牌绑定到用户帐户属性。
【解决方案2】:

从用户 POV 来看,我看不出 #2 是相关的。用户认为,如果他们“注销”,那么当前的任何操作都将被取消,那么他们很可能会关闭计算机——在这种情况下,您的传输将无法继续进行。就让他们把界面最小化成Windows中任务栏右下角的一个小图标(脑子放屁的人都想不出叫什么了)。

【讨论】:

  • 登出不会使当前会话无效吗? (使用 Spring 安全性)
  • 这取决于你如何实现它——通常是的。但他从来没有说过任何关于 Spring Security 的事情。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-19
  • 1970-01-01
  • 2018-10-16
  • 1970-01-01
相关资源
最近更新 更多