Java上传文件格式判断

仅依赖后缀名判断文件上传合法性是不够的,因为后缀可能被篡改。文章介绍了如何在Java后台进行文件类型的深度验证,包括对比文件头来确认常见文件类型,以及针对文本文件的特殊处理策略,如编码检查和模板匹配,以确保文件的正确性和安全性。
摘要由CSDN通过智能技术生成

判断用户上传文件的合法性仅仅通过后缀名是完全不够的,谁也不知道后缀名是否被更改,服务器保存一个不知道真实类型的文件有极大的风险。

 

因此需要后台进行进一步的文件类型校验,这里有两种情况:

  1)一般的文件类型例如:jpg、png、xlsx等等是有固定文件头的,提取出用户上传文件的文件头与固定文件头进行对比,就可以得到文件的准确类型。

  2)文本文件:txt、csv等等。文本文件具有特殊性,文本头无明显标志。但是文本文件百分百具有业务特殊性。可以在对文本进行格式验证时,判断是否为目标类型;或者通过编码校验,看文本是否正确编码,是否有乱码存在(正确编辑的文件,不可能存在乱码),有第三方插件cpdetector可以检测当前文件的编码;最后还可以通过提供文件模板,固定文本文件的头尾等方式来进行校验。

 

这里主要说明第一种情况,第二种文本情况根据业务具体环境不同,有不同的处理方式。

文件类型枚举?

package com.uti.utilEnum;


public enum  FileTypeEnum {
    JPG("ffd8ffe000104a464946"),
    PNG("89504e470d0a1a0a0000"),
    GIF("47494638396126026f01"),
    TIF("49492a00227105008037"),
    BMP_1("424d228c010000000000"),//16色位图(bmp)
    BMP_2("424d8240090000000000"),//24位位图(bmp)
    BMP_3("424d8e1b030000000000"),//256色位图(bmp)
    DWG("41433130313500000000"),
    HTML("3c21444f435459504520"),
    HTM("3c21646f637479706520"),
    CSS("48544d4c207b0d0a0942"
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值