fix: possible unsafe redirect

This commit is contained in:
Ash Monty 2022-07-10 10:41:11 +02:00
parent 041dc82a94
commit 748ec633f7
No known key found for this signature in database
GPG Key ID: 740B7C88251D49B6

View File

@ -219,7 +219,8 @@ router.get('/login', async (request, response) => {
});
router.post('/login', async (request, response) => {
const { username, password, redirect } = request.body;
const { username, password } = request.body;
let { redirect } = request.body;
let apiResponse = await util.apiPostGetRequest('/v1/login', {}, {
username,
@ -254,6 +255,10 @@ router.post('/login', async (request, response) => {
response.cookie('ph', encryptedBody.toString('hex'), { domain: '.pretendo.network' });
if (!redirect.startsWith('/')) {
redirect = null;
}
response.redirect(redirect || '/account');
});
@ -273,14 +278,19 @@ router.get('/register', async (request, response) => {
response.clearCookie('username', { domain: '.pretendo.network' });
response.clearCookie('mii_name', { domain: '.pretendo.network' });
const redirect = request.query.redirect;
let redirect = request.query.redirect;
if (!redirect.startsWith('/')) {
redirect = null;
}
renderData.redirect = redirect;
response.render('account/register', renderData);
});
router.post('/register', async (request, response) => {
const { email, username, mii_name, password, password_confirm, 'h-captcha-response': hCaptchaResponse, redirect } = request.body;
const { email, username, mii_name, password, password_confirm, 'h-captcha-response': hCaptchaResponse } = request.body;
let { redirect } = request.body;
response.cookie('email', email, { domain: '.pretendo.network' });
response.cookie('username', username, { domain: '.pretendo.network' });
@ -306,6 +316,10 @@ router.post('/register', async (request, response) => {
response.clearCookie('username', { domain: '.pretendo.network' });
response.clearCookie('mii_name', { domain: '.pretendo.network' });
if (!redirect.startsWith('/')) {
redirect = null;
}
response.redirect(redirect || '/account');
});