Nodejs の初心者である私は、優れたセキュリティ プラクティスを実際に読むことなく、単純なアプリの作成に飛びつきました。bodyParser()
マルチパート ファイルを使用した DOS 攻撃が可能になるため、すべてのルートを使用することは実際には悪いことであることがわかりました。
推奨される修正方法は、ルートに応じて特定のモジュールのみをロードすることです。つまり、マルチパート ファイルのアップロードの場合は、 を使用しますmultipart
。ファイルのアップロードを伴わない通常の POST (つまり、テキスト フォームの送信) の場合は、 を使用しますexpress.json(), express.urlencoded()
。
または、 busboy をconnect-busboyとともに使用することもできます。しかし、私が混乱しているのは、マルチパート データを処理する必要があるルートと処理しないルートを指定する方法です。そうでなければ、私は と同じ問題を抱えていませんか?bodyParser
さらに、busboy
ドキュメントはそれが処理しないと言いますGET
:
If you find that req.busboy is not defined in your code when you expect it to be, check that the following conditions are met. If they are not, req.busboy won't be defined:
1. The request method is not GET or HEAD
params
そのため、 で解析する方法についてさらに混乱していGET
ます。bodyParser
でデータにアクセスできるように、これを行うと思いますreq.params
。
たとえば、次の単純なアプリでからbodyParser()
に移行するにはどうすればよいですか。busboy/connect-busboy
var express = require('express');
var app = express();
var http = require('http').Server(app);
var bodyParser = require('body-parser');
app.use(bodyParser.json());
var busboy = require('connect-busboy');
app.use(busboy());
// How to use busboy to prevent multipart files here?
app.post("/form_data_no_fileupload", function(req, res) {
var somedata = req.body.somedata;
});
// Use busboy to handle both regular form data + fileuploads
app.post("/form_data_AND_fileupload", function(req, res) {
});
// What would handle GET without bodyparser?
app.get("/get_something", function(req, res) {
var params = req.params;
});
http.listen(3000, function() {});