前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >用魔数防范文件上传攻击

用魔数防范文件上传攻击

作者头像
dys
发布2018-04-03 13:16:46
1.5K0
发布2018-04-03 13:16:46
举报
文章被收录于专栏:性能与架构性能与架构

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

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

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

用魔数来防范文件上传攻击的原理非常简单,读取上传文件的前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安全 - 文件上传漏洞

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2015-12-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 JAVA高性能架构 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档