有没有办法限制 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 解析,但并未公开公开,您可能希望保存一个调用来解析并依赖 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。
您不能使用正则表达式来解析授权字符吗?
或者你的意思是直接在路由中?