어제 우연히 테스트를 해봤습니다.
비밀번호가 노출되었다는 것을 스스로 인지했음을 가정하고 제가 비밀번호를 새롭게 변경했습니다. 그런데 예상과는 다르게 여타 다른 단말기들의 로그인 상태가 계속 유지가 되더군요.
이럴경우 악의적인 대상이 로그인상태로 할 수 있는 활동을 여전히 하고 있을 것으로 생각하니 찜찜했습니다. 회원들도 이 사실을 안다면 굉장히 찜찜할 것 입니다.
특히 이 악의적인 대상이 자동로그인을 사용했다면 그 상태가 더 오래 유지될 가능성이 매우 높습니다. 저는 왜 비밀번호 변경시 변경성공한 단말 이외의 다른 단말기들의 로그인상태를 비로그인 상태로 전환을 시키는 작업이 없을까? 하는 의문이 생겼습니다.
1.로그인을 유지시키는 것이 세션이라는 불리우는 것이 담당하는건가요?
2.비밀번호수정 완료 액션에 이 로그인과 관련된 세션을 지우는 작업을 수행하는 애드온이 실현 가능한가요?
- 비밀번호수정한 단말은 제외
3.이건 모든 XE사용하는 사이트에 적용이 되어야 하는 거 아닐까요?
4.제가 가진 의문에 오류사항이나 다른 제가 알고 있지 못하는 부분이 있나요??
1. 네.
2. XE타운에서 사용중인 자동로그인 모듈에 비슷한 기능이 있습니다만, 자동로그인을 사용하는 단말기만 삭제되고 일반 로그인은 그대로 유지될 것 같습니다.
3. 보안상 아주 쓸모있는 기능이기는 합니다만...
4. 기본적으로 PHP에서는 현재 세션 이외의 세션을 조작할 수 없습니다. 일반적인 방법으로는 같은 회원이 다른 곳에서 로그인했는지 파악할 수도 없고, 다른 세션을 강제로 로그아웃시킬 수도 없습니다. "인증 세션 DB 사용"을 켜두셨다면 DB에서 다른 세션을 검색하여 삭제하는 것이 가능하겠지만, 성능 문제 때문에 대체로 안 쓰는 기능이죠.
세션을 DB에 저장하지 않고 우회적으로 차단하는 방법이 없지는 않으나, XE의 실행구조상 로그인 처리보다 애드온 처리가 나중에 이루어지기 때문에 애드온으로 구현하려면 상당히 귀찮아집니다. 세션 쉴드 애드온도 꽤 지저분한 방식을 사용하고 있고, 처리 시점이 늦기 때문에 100% 안전하지도 않습니다. (강제 로그아웃시키기 전에 이미 위험한 행동을 했을 수도 있어요.)