소스 검색

parse redirect URL

yusuketk 7 년 전
부모
커밋
67b53ad67e
1개의 변경된 파일3개의 추가작업 그리고 6개의 파일을 삭제
  1. 3 6
      src/server/routes/login-passport.js

+ 3 - 6
src/server/routes/login-passport.js

@@ -27,20 +27,17 @@ module.exports = function(crowi, app) {
       req.session.jumpTo = null;
 
       // prevention from open redirect
-      if (jumpTo.match(/^\/[^/].+$/)) { // only one '/' in the front of jumpTo
-        return res.redirect(jumpTo);
-      }
       try {
-        const redirectUrl = new URL(jumpTo.replace(/^\/+/, ''));
+        const redirectUrl = new URL(jumpTo, `${req.protocol}://${req.host}`);
         if (redirectUrl.hostname === req.hostname) {
           return res.redirect(redirectUrl);
         }
+        return res.redirect('/');
       }
-      catch (err) {
+      catch (e) {
         return res.redirect('/');
       }
     }
-
     return res.redirect('/');
   };