• 用魔数防范文件上传攻击


    上传文件功能的安全风险很高,为了防范攻击,最基本的安全工作就是验证文件类型是否为系统允许的

    简单的通过文件后缀来判断文件类型很不可靠,需要用更安全的方式

    很多类型的文件,起始几个字节的内容是固定的,所以根据这几个字节的内容就可以确定文件类型,这几个字节被成为魔数

    用魔数来防范文件上传攻击的原理非常简单,读取上传文件的前28个字节,转为十六进制,与魔数对比,就可以判断此文件是否为允许的文件类型

    常用文件类型的魔数

    JPEG - FFD8FF

    PNG - 89504E47

    GIF - 47494638

    BMP - 424D

    PDF - 255044462D312E

    ZIP - 504B0304

    RAR - 52617221

    WAV - 57415645

    AVI - 41564920

    下面是java读取文件头的示例代码

    byte[] b = new byte[28];

    InputStream is = new FileInputStream(file_path);

    is.read(b,0,28);

    is.close();

    String hex = bytes2hex(b);

    String fileHead = hex.toUpperCase();

    此方法可以更为严格的验证文件类型,降低文件上传漏洞风险,但不一定绝对安全,安全要求更高的话,建议使用资源服务器,可以参考 “web安全 - 文件上传漏洞

  • 相关阅读:
    一个maven问题
    zz 聊聊并发(七)——Java中的阻塞队列
    聊聊并发(六)
    jvm 内存参数
    zz 聊聊并发(五)
    zz 聊聊并发(四)
    zz 聊聊并发(三)
    zz 聊聊并发(二)
    zz 聊聊并发(一)
    JQuery中$.ajax()方法参数详解
  • 原文地址:https://www.cnblogs.com/jifeng/p/5138870.html
Copyright © 2020-2023  润新知