Multer可选限制参数含义及防DDoS配置咨询
Multer限制类参数详解与安全配置
各参数疑问对应解答
fieldNameSize:*是,仅针对multipart请求中提交的字段名称(即表单元素的name属性值)设置大小限制,不涉及req.body/req.file的其他内容,默认100字节,超限触发LIMIT_FIELD_NAME错误。fieldSize:*是,限制逻辑与字段名参数一致,仅将限制对象替换为非文件类字段的字段值(文件字段大小由fileSize单独管控),默认1MB,超限触发LIMIT_FIELD_VALUE错误。fields:*是,限制对象为请求体中允许的非文件类字段的最大数量,超限触发LIMIT_FIELDS错误。parts:*限制的是multipart请求体中所有part的总数量——multipart格式会将每个表单元素(文件/非文件字段)拆为独立的part(含自身头与内容),例如1个文件part + 2个非文件part = 3个parts,超限触发LIMIT_PARTS错误。headerPairs:*不对应HTTP全局请求头(如Bearer令牌的请求头),限制的是multipart请求中每个part内部的header配对数量(每个part自带Content-Disposition/Content-Type等内部头),默认无限,超限触发LIMIT_HEADER_PAIRS错误。
安全阈值配置建议
- 必须设置自定义限制:
fields/parts默认无限时,攻击者可构造海量小part/非文件字段的恶意请求,占用Multer解析的内存与CPU资源,触发DDoS。 - 阈值设定逻辑(宁紧勿松,基于业务最小合法需求):
- 先统计业务表单的最大合法part总数:例如电商商品上传场景,若需10张商品图(10个文件part)+ 4个非文件字段(名称/价格/描述/分类,4个非文件part),总合法part为14,可设
parts=15(留1-2个冗余应对合法边缘情况)。 fields阈值设为业务允许的非文件字段最大数量+1-2冗余,例如上述场景设为5。- 同步配置其他限制参数:
fieldNameSize=200字节(覆盖最长合法字段名)、fieldSize=2MB(覆盖最长合法非文件字段值,如商品描述)、headerPairs=10(覆盖每个part的最大合法内部头数量)。
- 先统计业务表单的最大合法part总数:例如电商商品上传场景,若需10张商品图(10个文件part)+ 4个非文件字段(名称/价格/描述/分类,4个非文件part),总合法part为14,可设
内容的提问来源于stack exchange,提问作者josh
相关产品推荐
相关产品推荐

