Skip to content

Commit c9e2398

Browse files
committed
Check image type from file extension
Signed-off-by: Yukai Huang <yukaihuangtw@gmail.com>
1 parent e19e664 commit c9e2398

File tree

1 file changed

+8
-3
lines changed

1 file changed

+8
-3
lines changed

lib/imageRouter/index.js

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
'use strict'
22

33
const fs = require('fs')
4+
const path = require('path')
45
const Router = require('express').Router
56
const formidable = require('formidable')
67

78
const readChunk = require('read-chunk')
89
const imageType = require('image-type')
10+
const mime = require('mime-types')
911

1012
const config = require('../config')
1113
const logger = require('../logger')
@@ -14,10 +16,13 @@ const response = require('../response')
1416
const imageRouter = module.exports = Router()
1517

1618
function checkImageValid (filepath) {
17-
const supported = ['png', 'jpg', 'jpeg', 'bmp', 'tif', 'tiff', 'gif']
1819
const buffer = readChunk.sync(filepath, 0, 12)
19-
const type = imageType(buffer)
20-
return type && supported.some(e => e === type.ext)
20+
/** @type {{ ext: string, mime: string } | null} */
21+
const mimetypeFromBuf = imageType(buffer)
22+
const mimeTypeFromExt = mime.lookup(path.extname(filepath))
23+
24+
return mimetypeFromBuf && config.allowedUploadMimeTypes.includes(mimetypeFromBuf.mime) &&
25+
mimeTypeFromExt && config.allowedUploadMimeTypes.includes(mimeTypeFromExt)
2126
}
2227

2328
// upload image

0 commit comments

Comments
 (0)