XE 공식 자료실

제작자
기진곰
등록일
2018-02-10
다운로드 수
899
링크2
kijin/xe-session-shield

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

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

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

스크린샷

상세 설명

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

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

XSS 방어를 위해서는 사용자가 입력한 값 중 script, iframe, form 등 공격에 사용될 수 있는 태그들, 그리고 onclick, onmouseover 등 스크립트 실행을 유발할 수 있는 속성들이 있는지 확인합니다. 공격이 의심될 경우, 눈에 보이지 않는 UTF-8 특수기호(zero-width space)를 중간에 끼워넣어 해당 스크립트의 실행을 방해합니다. (관리자로 로그인되어 있는 경우에는 필터링하지 않습니다.)

CSRF 방어를 위해서는 XE 코어의 checkCSRF() 함수가 이미 레퍼러 체크를 해주고 있지만, 이 함수를 호출하지 않는 모듈도 있으므로 POST 방식의 모든 폼 제출 및 AJAX 요청시 추가로 체크해 줍니다. (추가로 토큰을 검증하도록 하는 옵션도 있으나, 일부 모듈에서 정상적인 요청을 공격으로 오인하는 경우가 있으니 주의 바랍니다. 가능하면 레퍼러 체크만 하도록 설정하십시오.)

 

설치 및 사용시 주의사항

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

XE 1.6 ~ 1.7.7.1은 세션 식별자를 주기적으로 교체해 주는 기능이 XE Core에 포함되어 있었으나, 일부 IE8 사용자들의 로그인이 풀린다는 신고에 따라 XE 1.7.7.2에서 해당 기능이 제거되었습니다. 해당 버전 사용시 로그인이 풀린다면 이 애드온이 아니라 코어의 문제일 가능성이 높습니다.

XE Core와 마찬가지로 $_SERVER['HTTPS'] 초전역변수를 통해 SSL 사용 여부를 판단하므로, 일부 CDN이나 로드밸런서 사용시에는 SSL 사용 여부를 정확하게 판단하지 못할 수도 있습니다. CloudFlare를 사용하신다면 fixcloudflare.php를 적용해 주십시오.

 

버그 신고 및 일부 기능 끄기

모바일 푸시앱에서 httpOnly, secure 속성을 가진 쿠키를 인식하지 못해 로그인이 되지 않는 문제가 발생할 수 있습니다. 푸시앱을 사용하는 사이트에서는 해당 기능을 사용하지 마시기 바랍니다.

일부 모듈에서 사용자 입력값이 정상적으로 들어오지 않는 문제가 발생한다면 XSS 방어 기능을 끄고 사용해 주시기 바랍니다.

로그인이 풀리는 문제가 발생한다면 애드온 설정 페이지에서 세션 식별자를 갱신하지 않도록 할 수 있습니다. 단, 보안이 다소 약해질 수 있으니 꼭 필요하신 경우에만 변경해 주시고, 가능하면 SSL 환경에서 사용해 주십시오.

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

 

라이선스

v2.0 이상: GPLv2 (원하는 경우 GPLv3 적용 가능)

v1.8 이하: LGPLv2 (원하는 경우 GPLv2, GPLv3, LGPLv3 적용 가능)

 

포럼 0

로그인 후 작성할 수 있습니다.