文件类型识别

    在做考勤机的时候,遇到过从浏览器端向后台传输图片的操作,这个操作当时是通过把图片分片,以二进制流的形式传输到后台,然后在后台恢复为源文件。

    在上传文件的时候,需要对用户选择的文件类型进行判断,当然,这里最简单的方法莫过于直接判断后缀名即可,只需要读取文件名,然后判断文件的后缀,就可以判断上次文件的类型。

    这种方法很容易想到,但是这种方法很不安全,当用户把文件后缀改为可选文件后缀的时候,就会造成恶意上传文件。

    那么就要考虑对文件本身进行验证,来确定是否为可选文件,一般对于WEB程序来说,分为前台验证和后台验证了。

    当通过前台验证时,如果是使用前台验证时,可以语言本身提供的方法判别MIME类型,比如php文件,可以通过mime_content_type()和Fileinfo函数,也可以使用环境变量$_FILE[filename][‘type’]来识别,不过后者只能识别少数文件类型,是根据文件内容识别的。

    然而,很不幸的是,我只能用html+Javascript+CSS来实现我的前台,所以,为了安全起见,只有通过读取文件本身来判断文件的类型,好在图片文件的头部几个字节是统一的,如GIF是61 39 38 46 49 47H,JPG是FF D8 FFH,PNG是47 4E 50 89H等,可以通过读取图片文件的前几个字节来判断文件类型。

    后台也可以采用同样的方法验证,即通过读取文件头。当然,也有其他的方法,比如,可以使用MIME解析库等,这里就不赘述了,比如libmime等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值