XE 공식 자료실

제작자
기진곰
등록일
2015-04-12
다운로드 수
223
링크2
kijin/xe-session-shield

XSS, CSRF 및 세션 고정 공격에 방어하고, 선택적 SSL 사용시 세션 탈취 가능성을 줄여 주는 애드온입니다. 세션과 쿠키를 함께 사용하여 공격 여부를 판단하며, 세션에 이상이 있을 경우 강제 로그아웃 조치합니다.

라이선스
LGPL v2
설치경로
./addons/session_shield
최초 등록일
2015-02-11
전체 다운로드
3,537
체험하기

쉬운설치로 바로 체험할 수 있습니다

상세 설명

XSS, CSRF, 세션 고정 공격에 방어하고, 특정 상황에서의 세션 탈취 가능성을 줄여 주는 애드온입니다. @AJKJ 님의 XSS Session Protector 애드온을 바탕으로 SSL 선택적 사용시의 세션 보안을 강화하고, CSRF 방어 기능을 추가하고, 정기적으로 세션 식별자를 교체해 주도록 개선했습니다.

XSS 방어를 위해 httpOnly 속성을 가진 xe_shield 쿠키, 세션 탈취 피해를 줄이기 위해 secure 속성을 가진 xe_shield_ssl 쿠키를 생성합니다. (스크린샷 참조) 이 쿠키들은 세션 고정 공격을 막기 위해 10분마다 자동 갱신되며, 로그인시에는 즉시 갱신됩니다. 세션에 저장된 쿠키 정보와 실제 전송된 쿠키값이 일치하지 않을 경우 해킹으로 간주하고 강제 로그아웃 조치합니다.

CSRF 방어를 위해서는 XE 코어의 checkCSRF() 함수가 이미 레퍼러 체크를 해주고 있지만, 이 함수를 호출하지 않는 모듈도 있으므로 완벽한 방어를 위해 별도로 토큰을 생성하여 웹페이지에 삽입하고 POST 방식의 폼 제출 및 AJAX 요청시 확인하도록 합니다. 세션에 저장된 토큰과 실제 폼에서 제출된 토큰이 일치하지 않을 경우 해킹으로 간주하고 폼 처리를 중단합니다.

 

설치 및 사용시 주의사항

버전 1.5~1.6에서는 일부 모듈 및 게시판 스킨에서 정상적인 폼 제출 또는 AJAX 요청이 CSRF 공격으로 오인되는 문제를 대폭 개선하였으나, 모듈이나 게시판 스킨에 따라 여전히 문제가 발생할 수 있으니 버그 신고를 부탁드립니다.

SSO, 가상사이트, 같은 도메인 아래에 XE를 2개 이상 설치한 경우, 다른 프로그램과 로그인을 연동하는 경우, 일반 웹 방문자가 아닌 로봇을 위한 API를 운영하는 경우 등의 호환성은 충분히 테스트되지 않았으므로 주의하시기 바랍니다.

 

버그 신고 및 일부 기능 끄기

정상적인 사용자의 로그인이 풀리거나 정상적인 요청을 CSRF로 오인하는 등의 현상이 있다면 사용 환경(XE 버전, 문제가 발생하는 모듈 및 스킨, 웹 브라우저 종류, 인증세션 DB 사용 여부 등)에 대해 가능한 많은 정보를 포함하여 XE 자료실에 댓글을 작성하거나 제작자에게 메일을 보내주시기 바랍니다.

로그인이 풀리는 문제가 발생한다면 REFRESH_TIMEOUT = 0 으로 변경하여 세션 식별자 교체 기능을 꺼 주시기 바랍니다. 기본 설정보다는 보안이 다소 약해질 수 있으니 꼭 필요하신 경우에만 변경해 주시고, 가능하면 SSL 환경에서 사용해 주십시오.

CSRF 방어 기능을 끄려면 $shield->checkCSRFToken() 부분을 주석처리해 주십시오. 코어와 함께 배포되는 모듈들만 사용하신다면 코어에서 제공하는 CSRF 방어 함수만으로도 충분합니다.

포럼 2

로그인 후 작성할 수 있습니다.
  • 2015-04-19 09:27:36 제작자 기진곰

    @ひりゅう. 혹시 XE 1.8.0 사용중이신가요? 1.8.1에서도 같은 증상이 발생하나요? 제 테스트에 따르면 1.8.0에서 종종 문제가 있고, 1.8.1에서는 괜찮습니다만.

  • 2015-04-19 02:06:17 ひりゅう.

    XE 디폴트 스킨에서 CSRF토큰 불일치로 로그인이 거부되네요