如何保护zip文件上传?

时间:2017-06-09 07:11:47

标签: java security zipfile uploading

我的netbeans项目,我的雇主要我添加批量文件上传。 要求是,用户将csv文件和一些图像放在客户端的文件夹中。在文件上传页面,他将选择csv文件,我必须上传文件夹中的图像和csv。 经过简短的研究后,我发现无法从服务器端访问客户端文件的位置和详细信息,因此用户不会上传单个文件及其所属文件夹中的内容,而是将所有文件和上传zip文件。 现在我对上传zip文件的安全风险感到遗憾。

  1. 我应该采取什么措施来防止上传邮件和文件以及拉链?
  2. 是否可以在文件内容到达服务器之前对其进行验证?
  3. 即使到达服务器端,是否可以安全地验证它?

2 个答案:

答案 0 :(得分:0)

1.-一旦到达服务器就扫描zip文件。

2.-不太可能。即使您使用Javascript作为前端,它也无权访问用户文件系统。

3.-是的,例如“clamav”,但请注意,没有防病毒软件100%有效。

步骤是:

  • 安装clamav

  • 配置clamav定期更新其病毒数据库

  • 安排一个连续扫描某个目录(您上传用户文件的目录)中所有文件的cron作业

  • 删除包含病毒的文件

例如:

#dnf install -y clamav

  #dnf install -y clamav-update

$ clamscan java_error_in_IDEA_6451.log.zip

LibClamAV警告:******************************************** ******

LibClamAV警告: *病毒数据库超过7天!

LibClamAV警告: 请尽快更新。 *

LibClamAV警告:*********************************************** ***

java_error_in_IDEA_6451.log.zip:好的

-----------扫描摘要-----------

已知病毒:4490129

发动机版本:0.99.2

扫描目录:0

扫描文件:1

受感染的文件:0

扫描数据:0.37 MB

数据读取:0.03 MB(比率13.43:1)

时间:6.239秒(0米6秒)

答案 1 :(得分:0)

防病毒是可选的。您需要的所有内容都是验证并安全地将文件从存档中提取到服务器存储中。我不建议为此使用系统实用程序(zip等)。最好采用一些库来处理zip存档并编写代码进行处理。

这是用于验证存档中文件的可能算法。您应该遍历每个文件并检查是否:

  1. 文件太大。
  2. 文件名太长了。
  3. 目录结构太大。
  4. 文件名包含../
  5. 文件扩展名不在白名单中。
  6. 文件的属性为symlink
  7. 其他规则。
  8. 如果您当前的文件属实,那么最好停止处理此类存档并为客户端显示错误。

    当您检查完所有内容后,您就可以开始提取文件了。从现在开始,您可以尝试使用fileexif工具验证文件内容。

    此外,您可以要求存档具有一些特殊结构。例如,所有图像必须位于images文件夹中,存档必须只有1级文件夹,依此类推。