Skip to content

Commit 1de5ba0

Browse files
Potential fix for code scanning alert no. 14: URL redirection from remote source
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
1 parent 0a78fde commit 1de5ba0

File tree

1 file changed

+11
-3
lines changed

1 file changed

+11
-3
lines changed

app/auth.py

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import io
77
import base64
88
from datetime import datetime
9-
9+
from urllib.parse import urlparse
1010
auth_bp = Blueprint('auth', __name__)
1111

1212
@auth_bp.route('/login', methods=['GET', 'POST'])
@@ -32,7 +32,11 @@ def login():
3232
login_user(user)
3333

3434
next_page = request.args.get('next')
35-
return redirect(next_page) if next_page else redirect(url_for('index'))
35+
if next_page:
36+
safe_next = next_page.replace('\\', '')
37+
if not urlparse(safe_next).netloc and not urlparse(safe_next).scheme:
38+
return redirect(safe_next)
39+
return redirect(url_for('index'))
3640
else:
3741
flash('Invalid 2FA code', 'error')
3842
# Show 2FA form again with username preserved
@@ -54,7 +58,11 @@ def login():
5458
login_user(user)
5559

5660
next_page = request.args.get('next')
57-
return redirect(next_page) if next_page else redirect(url_for('index'))
61+
if next_page:
62+
safe_next = next_page.replace('\\', '')
63+
if not urlparse(safe_next).netloc and not urlparse(safe_next).scheme:
64+
return redirect(safe_next)
65+
return redirect(url_for('index'))
5866
else:
5967
flash('Invalid username or password', 'error')
6068

0 commit comments

Comments
 (0)