如何防止 POST 使用 busboy 在 node.js Express 中发送垃圾邮件?
How to prevent POST spamming in node.js Express using busboy?
我正在按照此处的示例进行操作:https://www.npmjs.com/package/busboy
我担心有人会故意让服务器过载。我想知道是否有一种方便的方法,在上传数据之前,通过测量整个 POST 正文的大小来防止垃圾邮件,而不仅仅是上传的文件。我尝试了以下方法,但显然没有用:
if (JSON.stringify(req.body).length > 5 * 1024 * 1024) res.redirect('/');
您不能依赖 Content-Length
的设置。即使已设置,如果此人恶意行事,他们要么使用不正确的 Content-Length
,要么使用 Transfer-Encoding: chunked
,在这种情况下,无法判断请求正文有多大。
此外,每次在 req.body
上调用 stringify()
也很容易引起 DoS 式攻击。
但是,busboy
确实有 several options 用于限制 application/x-www-form-urlencoded
和 multipart/form-data
请求的各个方面(例如最大文件大小、最大文件数等) .
您还可以将请求主体的解析限制为您期望请求主体的路由,而不是尝试为 所有 请求解析请求主体。
我正在按照此处的示例进行操作:https://www.npmjs.com/package/busboy
我担心有人会故意让服务器过载。我想知道是否有一种方便的方法,在上传数据之前,通过测量整个 POST 正文的大小来防止垃圾邮件,而不仅仅是上传的文件。我尝试了以下方法,但显然没有用:
if (JSON.stringify(req.body).length > 5 * 1024 * 1024) res.redirect('/');
您不能依赖 Content-Length
的设置。即使已设置,如果此人恶意行事,他们要么使用不正确的 Content-Length
,要么使用 Transfer-Encoding: chunked
,在这种情况下,无法判断请求正文有多大。
此外,每次在 req.body
上调用 stringify()
也很容易引起 DoS 式攻击。
但是,busboy
确实有 several options 用于限制 application/x-www-form-urlencoded
和 multipart/form-data
请求的各个方面(例如最大文件大小、最大文件数等) .
您还可以将请求主体的解析限制为您期望请求主体的路由,而不是尝试为 所有 请求解析请求主体。