Ich muss sichere Weiterleitungen nur innerhalb der gemeinsamen Domäne example.local
machen. So zum Beispiel die folgenden gelten: http://blog.example.local
, http://www.example.local/dashboard
während die folgenden nicht: http://blog.example.local
http://blog.example.local.fake.com
Ist es sicher, url.parse zu verwenden, um zu überprüfen, ob redirectURL nur in der Domäne vorhanden ist?
var url = require('url');
app.post('/login', function (req, res, next) {
var redirect = req.query.redirect,
targetUrl = url.parse(redirect);
if (targetUrl.host !== 'example.local') {
return next(new Error('Open redirect attack detected'));
}
return res.redirect(redirect);
});
Ist es sicher genug, um in der Produktion zu verwenden, oder sollte ich etwas reparieren?
Sorry, irritierend zu klingen, aber wie unterscheidet sich das von deiner [vorherigen Frage mit dem gleichen Code] (http://stackoverflow.com/questions/37668514/is-preventing-open-redirects-attack-in- nodejs-secure) das schon beantwortet wurde? Anders als der hartcodierte Host – cviejo
möchte ich in dieser Lösung sicher sein, weil es sehr kritisch Sache ist – Erik
Nun, die akzeptierte Lösung in dem anderen Beitrag nutzt eine Whitelist. Was Sie hier vorschlagen, ist im Wesentlichen eine Whitelist mit nur einem Element, also sind sie technisch gleichwertig. Ich verstehe nicht, warum die Antworten von den vorherigen abweichen sollten, aber vielleicht bekommst du neue Informationen, klar ... – cviejo