Преглед изворни кода

prevention from open redirect

yusuketk пре 7 година
родитељ
комит
2672a67973
2 измењених фајлова са 10 додато и 2 уклоњено
  1. 5 1
      src/server/routes/login-passport.js
  2. 5 1
      src/server/routes/login.js

+ 5 - 1
src/server/routes/login-passport.js

@@ -24,7 +24,11 @@ module.exports = function(crowi, app) {
     const jumpTo = req.session.jumpTo;
     if (jumpTo) {
       req.session.jumpTo = null;
-      return res.redirect(jumpTo);
+
+      // prevention from open redirect
+      if (!jumpTo.match(/^\/\/.+$/)) {
+        return res.redirect(jumpTo);
+      }
     }
 
     return res.redirect('/');

+ 5 - 1
src/server/routes/login.js

@@ -37,7 +37,11 @@ module.exports = function(crowi, app) {
     const jumpTo = req.session.jumpTo;
     if (jumpTo) {
       req.session.jumpTo = null;
-      return res.redirect(jumpTo);
+
+      // prevention from open redirect
+      if (!jumpTo.match(/^\/\/.+$/)) {
+        return res.redirect(jumpTo);
+      }
     }
 
     return res.redirect('/');