Expressjs で許可されている uri 文字を制限する方法はありますか? 文字の変数を設定するように:
allowed_uri_chars = 'a-zA-Z0-9'; etc
Expressjs で許可されている uri 文字を制限する方法はありますか? 文字の変数を設定するように:
allowed_uri_chars = 'a-zA-Z0-9'; etc
最も論理的で最も簡単な方法は、いくつかのミドルウェアで正規表現を使用することです。
var url = require("url");
app.use(function(req, res, next) {
var pathname = url.parse(req.url).pathname;
if(!pathname.match(/^[a-z0-9\/]+$/i)) return res.send(403);
next();
});
または、URLはすでにExpressによって解析されていますが、これは公開されていないため、1回の呼び出しを保存して解析し、Expressの内部に依存することをお勧めします(これはお勧めしません)。
app.use(function(req, res, next) {
if(!req._parsedUrl.pathname.match(/^[a-z0-9\/]+$/i)) return res.send(403);
next();
});
これにより、パス名(の場合http://example.com/foo/bar?id=1334
、パス名は/foo/bar
)に文字、数字、およびスラッシュのみが含まれるようになります。そうでない場合は403を発生させます。
正規表現を使用して許可された文字を解析できませんか?
それともルーティングで直接ということですか?