2

Expressjs で許可されている uri 文字を制限する方法はありますか? 文字の変数を設定するように:

allowed_uri_chars = 'a-zA-Z0-9'; etc
4

2 に答える 2

3

最も論理的で最も簡単な方法は、いくつかのミドルウェアで正規表現を使用することです。

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を発生させます。

于 2012-05-25T17:51:04.073 に答える
1

正規表現を使用して許可された文字を解析できませんか?

それともルーティングで直接ということですか?

于 2012-05-25T17:44:35.843 に答える