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 解析,但并未公开公开,您可能希望保存一个调用来解析并依赖 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 回答