首页 > 代码库 > 文件上传如何合理地验证文件类型?

文件上传如何合理地验证文件类型?

在网上搜了一下,一般都是通过文件后缀名判断,很显而易见的是用户通过修改后缀名来逃避,我想问的问题有两个:

  1. 还有什么验证文件类型的方法?

  2. 攻击者利用后缀名漏洞能造成什么样的危害?

在网上找到的攻击方式有:

  • 修改后缀名(exe->jpg),
  • 多后缀名(test.php.fr),
  • 后缀名大小写(php->pHp),
  • 代码嵌入(图片里注入php代码),
  • null字符(00)
  • 相对路径(../../../)

知乎用户-江南回答

其实对于防御者来说,其实不用这么费劲来进行验证

  1. 时间戳+随机数+.jpg后缀,强制重命名上传文件

  2. 隐藏上传后的文件名

  3. 上传目录不给执行权限

  4. 上传的文件按照图片执行

    文件上传攻击框架

文件上传如何合理地验证文件类型?