강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

문주영님의 프로필 이미지
문주영

작성한 질문수

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

서블릿 필터 - 인증 체크

서블릿 필터 - 인증 체크 로직 AND가 아닌 OR인 이유?

해결된 질문

작성

·

61

0

1. 강의 내용과 관련된 질문인가요? (/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (/아니오)[질문 내용]

 

if (session == null || session.getAttribute(SessionConst.LOGIN_MEMBER) == null) {

    log.info("미인증 사용자 요청 {}", requestURI);
    //로그인으로 redirect
    httpResponse.sendRedirect("/login?redirectURL=" + requestURI);
}

안녕하세요! 선생님!~ 강의듣다가 질문이 있는데요


if 조건문에서요

session이 있기만 하다면 인증 사용자로 식별되잖아요 그런데 만약 도용된 session이라고 가정하면 null에 포함되지 않으니 인증 사용자로 식별되어 페이지를 들어갈 위험은 없을까요?

 

if (session == null && session.getAttribute(SessionConst.LOGIN_MEMBER) == null)

OR가 아니라 AND 조건문이어야 할 것 같아서 질문드립니다. 제가 잘못 생각하고 있다면 말씀 부탁드립니다!

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

문주영님, 강의에서 나오는 코드에 대한 궁금증을 제시해 주셨군요! 질문 주신 내용을 살펴보며, 조건문에서 OR(||)를 사용하는 이유를 설명해 드리겠습니다.

session == null || session.getAttribute(SessionConst.LOGIN_MEMBER) == null

  1. OR 연산의 의미:
    • session == null은 요청에 대해 서버에 세션이 아예 존재하지 않는 경우를 의미합니다.
    • session.getAttribute(SessionConst.LOGIN_MEMBER) == null은 세션은 존재하지만, 로그인한 사용자 정보(LOGIN_MEMBER)가 세션에 저장되어 있지 않다는 것을 확인합니다.

두 조건 중 하나라도 만족하면 미인증 사용자로 간주하여 리다이렉트합니다. 따라서, OR 조건이 적합하며, 세션이 없는 경우는 물론이고, 세션이 존재하더라도 로그인 정보가 존재하지 않는 경우 모두를 포괄할 수 있습니다.

도용된 세션의 경우

도용된 세션에 대한 우려는 인증 및 세션 관리 이외의 보안 메커니즘 (예: 세션 만료 시간 설정, 세션 고정 공격 방지 등)을 활용하여 해결해야 합니다. 이는 해당 조건문에서 직접적으로 해결할 수 있는 문제가 아닙니다.

이 조건문은 미인증 사용자를 걸러내는 데 초점을 맞추고 있으며, 보안적인 부분은 추가적인 방법을 통해 보완해야 합니다.

더 자세한 내용이 궁금하시다면 아래의 유사한 질문이 답변에 도움이 될 수 있습니다:

저는 질문자님의 이해를 돕고자 지식 공유자의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏

추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식 공유자께서 답변해 주실 것입니다.

문주영님의 프로필 이미지
문주영

작성한 질문수

질문하기