Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

세션 보안키 기능 제거 #2157

Merged
merged 7 commits into from Jul 24, 2023
Merged

Conversation

kijin
Copy link
Member

@kijin kijin commented Jul 22, 2023

세션 보안키 기능은 오래 전 제가 배포했던 "세션 쉴드" 애드온에서 가져온 것입니다. 대부분의 사이트가 플래시 업로더를 사용하고 SSL도 "선택적 사용"에 그치던 시절, 기본 세션 쿠키(PHPSESSID)의 열악한 보안성을 만회하기 위해 2개의 쿠키(rx_sesskey1, rx_sesskey2)를 추가로 사용하는 기능입니다.

당시에는 플래시 업로더 때문에 세션 쿠키에 httpOnly 속성을 사용할 수 없어서, 자바스크립트에서 세션을 쉽게 탈취할 수 있었습니다. 그래서 두 개의 세션 보안키에 httpOnly 속성을 추가하고, SSL을 사용할 수 있는 경우 2번 키에는 secure 속성도 추가하여, 기본 세션 쿠키보다 탈취하기 어렵도록 만들었습니다.

회원 정보 수정이나 관리자 화면 등 중요한 기능에 SSL을 사용하여 접근할 때, 기본 세션 쿠키만 전달하고 세션 보안키 2개를 전달하지 않으면, 탈취된 세션이라고 가정하고 강제로 로그아웃시키는 것이 이 기능의 핵심입니다. 3개의 쿠키는 사실상 서로 연동되어 있고 탈취의 난이도만 다르기 때문에, 정상적인 브라우저를 사용하는 정상적인 사용자라면 3개의 쿠키가 항상 한 세트로 움직인다는 점을 이용했습니다.

그러나 시대가 바뀌어 플래시 업로더는 사용하지 않게 되었습니다. 라이믹스에서는 꽤 오래 전부터 "SSL 전용 세션" 옵션을 선택하는 경우 httpOnly 속성도 조용히 추가해 주고 있었는데, 이 잠수함 패치 때문에 오류가 발생한다는 제보는 받지 못했습니다. 이제는 SSL 적용 여부와 관계없이 httpOnly 속성을 항상 넣는 것을 기본값으로 하겠습니다. 이것으로 rx_sesskey1은 더이상 존재 이유가 없습니다.

하나의 사이트 안에서 http 주소와 https 주소를 오가는 일도 드물어졌습니다. 라이믹스 2.0부터는 SSL을 아예 사용하지 않거나 항상 사용하거나, 2가지 옵션밖에 지원하지 않습니다. "선택적 사용" 시나리오를 위해 만들어진 rx_sesskey2도 더이상 필요하지 않습니다.

@kijin kijin merged commit 8579291 into rhymix:develop Jul 24, 2023
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

1 participant