Skip to content

Commit 4a9a943

Browse files
authored
Merge pull request #566 from gnuboard/fix/open_redirect
fix: 로그인 시 Open Redirect 취약점 수정
2 parents 6f5f399 + eb52096 commit 4a9a943

File tree

2 files changed

+15
-3
lines changed

2 files changed

+15
-3
lines changed

bbs/login.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
from core.template import UserTemplates
88
from lib.common import session_member_key
9-
from lib.dependency.dependencies import set_current_connect
9+
from lib.dependency.dependencies import set_current_connect, validate_login_url
1010
from lib.member import is_super_admin
1111
from lib.social import providers
1212
from lib.social.social import SocialProvider, oauth
@@ -36,10 +36,10 @@ async def login_form(
3636
async def login(
3737
request: Request,
3838
member_service: Annotated[MemberService, Depends()],
39+
url: Annotated[str, Depends(validate_login_url)],
3940
mb_id: str = Form(...),
4041
mb_password: str = Form(...),
4142
auto_login: bool = Form(default=False),
42-
url: str = Form(default="/")
4343
):
4444
"""로그인 폼화면에서 로그인"""
4545
member = member_service.authenticate_member(mb_id, mb_password)

lib/dependency/dependencies.py

+13-1
Original file line numberDiff line numberDiff line change
@@ -254,4 +254,16 @@ async def set_current_connect(
254254

255255
except ProgrammingError as e:
256256
print(e)
257-
257+
258+
259+
def validate_login_url(url: str = Form(default="/")):
260+
"""
261+
로그인할 때 url을 검사하는 함수
262+
"""
263+
allow_urls = []
264+
265+
if (url
266+
and not url.startswith("/")
267+
and url not in allow_urls):
268+
raise AlertException("올바르지 않은 URL입니다.", 400)
269+
return url

0 commit comments

Comments
 (0)