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

1.8.4 이후 회원 그룹 변경 문제 #1590

Closed
socialskyo opened this issue Jul 7, 2015 · 30 comments
Closed

1.8.4 이후 회원 그룹 변경 문제 #1590

socialskyo opened this issue Jul 7, 2015 · 30 comments
Labels
Milestone

Comments

@socialskyo
Copy link

랜덤하게(랜덤이지만 자주) 회원 그룹 변경후 저장시 금지된 닉네임이라는 alert 메세지가 나오며 저장이 안됩니다.

@ghost ghost self-assigned this Jul 7, 2015
@bjrambo
Copy link
Contributor

bjrambo commented Jul 7, 2015

@bnu b0dc85b 이 커밋에서 문제점이 생기는것 같습니다. 해당 부분은 좀 더 확인 해보시는게 좋을 것 같아요.

@bjrambo
Copy link
Contributor

bjrambo commented Jul 7, 2015

그리고 해당 회원가입및 회원정보 변경의 관한 이 이슈는 최대한 빠르게 진행 해주셨으면 좋겠습니다..

이유는 1.8.3-> 1.8.4 업데이트 당시 취약점 공격방법이 알려지고 그걸 보안한 보안패치가 포함이 되어있어 마음대로 다운그래이드를 불가능한 상황입니다. (기존에는 취약점 패치가 잇을경우 1.8.3.1 이렇게 배포되어서 그나마 편리 했는데요 ..) 그렇기 때문에 다운그레이드도 불가능하고, 마음대로 어떻게 할 수 없다보니.. 운영자 입장에서 버그고치는것이 아닌, 보안을 중심적으로 운영하다보면.. 롤백을 마음대로 할 수 없는 상황이거든요..

물론 그 작은 사이트 누가 해킹을 하겠냐 라고는 하지만, 혹시나 하는 마음이 있고 돌다리도 두드려보고 건너야 한다는 말도 있잖습니까.. 자칫 잘못하면 문제점이 발생될 위험부담이 있다 판단이 됩니다.. 되도록이면 코드라도 먼저 수정할 수 있는 방법이 제공이 되었으면 좋겠습니다.(_ _ )

물론, 해당 부분은 저도 시급한 문제인만큼 고치는대 최선을 다할 예정입니다.
PR할 수 있으면 PR드리겠습니다..

@bjrambo
Copy link
Contributor

bjrambo commented Jul 7, 2015

일단 기존의 코드에서, 필터링 강화 부분이 문제점이 된 것 같습니다.
한글에 대한 닉네임부분도 정상적인 반영이 필요한데.. 그게 안된 것 같아요.
_070815_061848_am
이 처음스샷에서 처음에 영어닉네임과 이름을 입력시 정상적인 통과를하는 것이 아래쪽에 보시다 시피 한글 닉네임과 이름을 사용햇더니 통과를 못합니다.

혹시나 해서
_070815_062035_am

이 그림과 같이 다시 필터링하는것을 제외했더니 정상적인 작동하는 것으로 보여집니다. 전체적으로 거론드렸던 PR(커밋)에서 필터링하는 과정에서 한글의 대한 부분에서 버그가 발생되는 것으로 보여집니다.
(영어는 정상적으로 작동합니다.)

@socialskyo
Copy link
Author

@qw5414 감사합니다. 참고로 leejo0513/chrisM 등 영문으로된 닉네임에서도 같은 증상이 일어납니다.
위 pr 적용 이후 캐쉬파일 재생성하고도 계속 발생합니다.

@kijin
Copy link
Contributor

kijin commented Jul 8, 2015

제가 사고친 것 때문에 꼭두새벽부터 고생이 많으십니다 (_ _)

근데 이런 버그가 테스트도 없이 master에 merge되다니... @bnu 님 제 PR을 너무 믿으시는 거 아닌가요? PR은 그냥 PR일 뿐인데... ㅠㅠ

@kijin
Copy link
Contributor

kijin commented Jul 8, 2015

@mactopia 음... 제가 테스트해 보니 @qw5414 님의 PR 적용 여부와 무관하게 영문 닉네임은 아무 문제가 없는데요... 어떤 현상인지 좀더 자세히 설명해 주시면 감사하겠습니다. 금지된 닉네임이라고 나오나요? 아니면 닉네임 없이 가입되나요?

@socialskyo
Copy link
Author

@kijin 아직은 가입은 테스트 못해봤는데...회원 정보관리에서 그룹을 수정할때 이 이슈를 발견했습니다.

이미 가입된 유저의 -> 그룹 수정후 -> 저장

"사용 금지된 닉네임입니다."

요런 얼럿이 나옵니다.

해당 유저 닉네임/id : ChrisM/nekoda 였습니다.

@bjrambo
Copy link
Contributor

bjrambo commented Jul 8, 2015

@kijin @mactopia 저도 첫 테스트할때 영문에서는 문제점이 아에 없고 정상적인 통과를 보여줬습니다.(첫번째 사진의 debugPrint참고)

@socialskyo
Copy link
Author

털썩.. 역시 제가 문제가 있는거군요... 괜한 이슈만들어 죄송합니다.T.T 저는 그럼 또 다른 이유를 찾아 보러 가겠습니다...

@kijin
Copy link
Contributor

kijin commented Jul 8, 2015

@mactopia 님이 잘못 보신 게 아니예요. 기존에 아이디/닉네임 필터링이 너무 허술해서 공백이나 그 밖에 눈에 보이지 않는 특수문자가 들어가는 경우가 있었습니다. 기존 회원정보에 이런 것이 들어가 있었다면 회원정보를 변경하는 과정에서 문제가 발생할 수도 있겠네요.

DB에 저장된 닉네임 맨 뒤에 공백을 집어넣은 후 XE의 관리모듈에서 회원정보 변경을 시도해 보니 "이미 존재하는 아이디입니다."라는 에러가 발생하는 것을 확인했습니다. 경우에 따라서는 "사용 금지된 닉네임입니다."가 나올 수도 있겠습니다. 좀더 확인해 보겠습니다.

@kijin
Copy link
Contributor

kijin commented Jul 8, 2015

member.admin.controller.php에는 기존의 필터링 방식이 그대로 남아 있네요. 가입시 적용되는 필터링과 관리모듈에서 직접 수정시 적용되는 필터링이 서로 다를 수 있다는 뜻이죠... 이것도 수정이 필요할 것 같습니다.

@bjrambo
Copy link
Contributor

bjrambo commented Jul 8, 2015

@kijin

@socialskyo
Copy link
Author

@kijin 아...저는 왜그럴까요. 위 #1597 적용하면 아까 말한 얼럿은 사라지는데 그룹이 저장이 안됩니다.

@kijin
Copy link
Contributor

kijin commented Jul 8, 2015

@mactopia 모든 회원이 다 그런가요, 아니면 특정 회원만 그런가요? 문제가 있는 회원들에 일정한 패턴이 있지는 않나요? (닉네임이 모두 한글인 회원, 한글과 영문이 섞인 회원, 모두 영문인 회원, 영문인데 대소문자가 섞인 회원 등)

@socialskyo
Copy link
Author

@kijin 님 그래서 다른 test 계정으로 해본거 실시간 보고 드립니다.
위 chrisM이라는 계정으로는 그룹 변경후 저장이 안되지만..
test 라는 계정으로는 회원 그룹 변경후 저장은 됩니다. 하지만 다시 변경한 그룹을 미선택 하여 원래대로 돌리면 아까 말한 금지된 닉네임 오류가 나옵니다.

정리하자면
닉네임/id : ChrisM/nekoda
이메일 : 영문 소문자로만 이루어진@gmail.com

새로운 회원 그룹 추가시 : 에러 없이 추가한 그룹 저장만 안됨
기존 회원 그룹 제거시 : 금지된 닉네임 얼럿
이메일 변경시 : 에러 없이 저장 안됨

닉네임/id : test/test
이메일 : isdji1iojsd@gmail.com

새로운 회원 그룹 추가시 : 금지된 닉네임 얼럿
기존 회원 그룹 제거시 : 에러 없이 추가한 그룹 저장만 안됨
이메일 주소 변경시 : 금지된 닉네임 오류 저장 안됨

위 두케이스 에러가 정확히 반대 양상을 보이고 있습니다. ^^:

@ghost ghost added the type/bug label Jul 8, 2015
@ghost ghost added this to the 1.8.5 milestone Jul 8, 2015
@kijin
Copy link
Contributor

kijin commented Jul 8, 2015

@mactopia 잠깐만 서버 환경을 테스트해 주시겠어요?

아래의 내용을 임의의 php 파일에 넣고, XE를 통하지 않고 직접 실행해 보세요. 인코딩은 당연히 UTF-8로 하시고요. 결과가 어떻게 나오나요?

<?php
error_reporting(-1);
var_dump(defined('PCRE_VERSION') ? PCRE_VERSION : null);
var_dump(preg_replace('/[\pZ\pC]+/u', '', 'ChrisM'));
var_dump(preg_replace('/[\pZ\pC]+/u', '', 't e s t'));
var_dump(preg_replace('/[\pZ\pC]+/u', '', "테스트\tChrisM\rnekoda"));
?>

@socialskyo
Copy link
Author

@kijin 님 요렇게 나옵니다. IE에서 UTF-8로 인코딩 선택하였습니다.
string(15) "8.36 2014-09-26" string(6) "ChrisM" string(4) "test" string(21) "테스트ChrisMnekoda"

@kijin
Copy link
Contributor

kijin commented Jul 8, 2015

@mactopia 음 그렇다면 닉네임 필터링은 의도한 대로 정확하게 되고 있다는 뜻인데요... 왜 님의 서버에서만 계속 문제가 생기는지 모르겠네요. 여기서는 아무리 해봐도 재현이 안되거든요. 애드온이 문제인가... ㅠ

두 가지만 더 테스트해 볼게요.

  1. 일단 가장 의심스러운 곳은 member.controller.php 1941줄과 2124줄입니다. 닉네임에 htmlspecialchars() 함수를 적용하는데, 이 때 UTF-8 인코딩에 맞지 않은 문자가 하나라도 들어가면 문자열 전체가 공백으로 바뀌거든요. 닉네임이 공백이 되면 금지된 닉네임이라는 오류가 발생할 수 있습니다. 2124줄을 주석처리하고 회원정보를 변경해 보시기 바랍니다.
  2. member.admin.controller.php 81줄과 91줄에 각각 아래의 내용을 추가한 후, 관리 모듈에서 회원정보를 변경해 보세요. 회원정보 변경이 되지 않고 닉네임과 관련된 디버깅 정보가 출력될 것입니다. (추가된 코드는 관리 모듈에서만 작동하므로 현재 접속중인 다른 사용자들에게는 영향을 미치지 않습니다. 테스트 후 즉시 원래대로 돌려놓으세요.)

81줄 (remove whitespace 부분 직전)

var_dump($args->nick_name, bin2hex($args->nick_name));

91줄 (remove whitespace 부분 직후)

var_dump($args->nick_name, bin2hex($args->nick_name)); exit;

@socialskyo
Copy link
Author

1번 해도 그대로 금지된 닉네임 나옵니다 (chrisM 닉네임)
2번 결과 첨부합니다. (ChrisM 닉네임)
string(6) "ChrisM" string(12) "43687269734d" string(6) "ChrisM" string(12) "43687269734d"

본의 아니게 죄송한 느낌이...

@kijin
Copy link
Contributor

kijin commented Jul 8, 2015

@mactopia 일단 인코딩 문제는 아니네요. 눈에 보이지 않는 특수문자가 들어간 것도 아니고요. 게다가 이번에 새로 추가된 코드마저 모두 우회했는데도 여전히 에러가 발생하네요...

회원정보 수정시 금지된 닉네임 여부를 체크하는 것은 member.controller.php 2173줄 전후입니다. 아까 91줄에 넣으라고 말씀드렸던 코드를 이 부분에 붙여넣으면 금지된 닉네임이라는 에러가 발생하는 시점에 닉네임 값을 확인할 수 있습니다. string(6) "ChrisM"이라고 나온다면 닉네임이 정상인데도 에러가 발생하는 황당한 경우이고 (혹시 ChrisM이 실제로 금지된 닉네임은 아니겠죠? ㅋ), 그렇지 않다면 그 윗부분 어딘가에서 닉네임을 날려먹은 거죠.

@wookho
Copy link

wookho commented Jul 8, 2015

금지닉네임 관련 애드온도 마켓에도 있고 공개된 것도 있고 할텐데 그런 영향은 아닐까요 ?

@socialskyo
Copy link
Author

@kijin 님 네. 애드온도 코어에서 기본으로 들어가 있는 애드온만 남기고 테스트를 해봤는데도 그러네요.
쩝.. 일단 급한일은 아니니 걍 쓰겠습니다. ^^; 영 안되면 db에서 회원 그룹 직접 수정하면 되요..

@ghost
Copy link

ghost commented Jul 8, 2015

@mactopia @kijin
회원 모듈 설정에서 '아이디'항목을 사용하지 않은 상태에서 회원정보 변경에 문제가 있는걸로 확인했습니다.
이 때 user_id를 반환하지 않기 때문에 memberModel::getMemberSrlByUserID($args->user_id)와 같이 사용할 때 빈 user_id로 인한 문제로 확인했습니다.

@ghost
Copy link

ghost commented Jul 8, 2015

@kijin 관련 부분 패치는 제가 진행하겠습니다.
고생 많으셨는데 꼼꼼히 체크하지 못해 죄송합니다. ㅠ

@kijin
Copy link
Contributor

kijin commented Jul 8, 2015

@bnu 아, 닉네임이 아니라 아이디가 문제였나요?

1.8.2의 파일핸들러 치명적 오류, 1.8.4의 닉네임 오류 등 최근에 대형사고가 잦았던 것 같습니다. 다음 버전은 특별히 꼼꼼하게 살피셔서 모든 사용자들이 안심하고 업데이트할 수 있으면 좋겠네요.

저도 앞으로는 PR 넣을 때 더 많은 테스트를 거치도록 하겠습니다 ^^

@ghost ghost closed this as completed Jul 8, 2015
largeden referenced this issue in largeden/xe-core Jul 9, 2015
# By bnu (4) and others
# Via bnu (7) and others
* 'master' of https://github.com/xpressengine/xe-core:
  fix #1583 `is_keyword`에 대한 취약점 문제 개선
  version 1.8.5
  fix #1590 회원 모듈 설정에서 회원 ID를 사용하지 않을 때 회원 정보를 저장할 수 없는 문제 고침
  아이디/닉네임 필터링 방식을 더 일관성있게 고침
  한글을 정상적으로 필터링하지 못하던 문제점 개선.
  fix #1589 글/댓글 작성과 동시에 커버이미지 선택이 동작하지 않는 문제 수정 - 파일의 권한 체크
  CK에디터 파일첨부 디자인 변경에 따른 문구 수정
  모바일에서 툴바줄이기를 기본으로
  fix #1586 메뉴 노출 대상 그룹이 1개 이상일 경우 메뉴명 수정이 안되는 문제 수정
largeden referenced this issue in largeden/xe-core Jul 9, 2015
…o develop

# By bnu (4) and others
# Via bnu (7) and others
* 'develop' of https://github.com/xpressengine/xe-core:
  fix #1583 `is_keyword`에 대한 취약점 문제 개선
  version 1.8.5
  fix #1590 회원 모듈 설정에서 회원 ID를 사용하지 않을 때 회원 정보를 저장할 수 없는 문제 고침
  아이디/닉네임 필터링 방식을 더 일관성있게 고침
  한글을 정상적으로 필터링하지 못하던 문제점 개선.
  fix #1589 글/댓글 작성과 동시에 커버이미지 선택이 동작하지 않는 문제 수정 - 파일의 권한 체크
  CK에디터 파일첨부 디자인 변경에 따른 문구 수정
  모바일에서 툴바줄이기를 기본으로
  fix #1586 메뉴 노출 대상 그룹이 1개 이상일 경우 메뉴명 수정이 안되는 문제 수정
@socialskyo
Copy link
Author

@kijin 말씀 하시던 일이 실제로 일어 나고 있었네요... 다 제 불찰입니다..
뭐냐면요. 현재 1.8.5 인 상태임에도 금지된 닉네임이 계속 나오길래....혹시나 해서 보니까..
제가 회원 정보 수정만 하면 해당 회원은...정말 스팸 닉네임 등록 리스트에 차곡 차곡 정리 되고 있습니다.
혹시 짐작가시는게 있으실려나요..

@kijin
Copy link
Contributor

kijin commented Jul 12, 2015

@mactopia 음 그건 황당한데요? 회원정보 수정 act에서 금지닉네임 추가 act로 연결되는 곳이 전혀 없는데... 혹시 사용하시는 애드온 중 하나가 1.8.5와 충돌을 일으키고 있는 게 아닐까요?

@bjrambo
Copy link
Contributor

bjrambo commented Jul 12, 2015

@mactopia 저도 1.8.4만 단일로 윗스샷처럼 테스트 했던 웹공간에서 테스트 당시 바꾼 코드로 테스트 해봤지만. 금지 닉네임이나 금지 아이디에 들어가는 코드는 전혀 없습니다.
@kijin 님 말씀대로 다른 서드파티에서 트리거나 애드온에서 문제점이 일으킨게 아닌가 생각되는데요?

@bjrambo
Copy link
Contributor

bjrambo commented Jul 12, 2015

@mactopia 혹시 @sejin7940 님께서 개발하신 닉네임관리 관련 모듈을 살펴보시는게 좋을듯 합니다.

@socialskyo
Copy link
Author

@qw5414 @kijin 님 답변 감사 드립니다. sejin님 닉네임 관리 모듈과 충돌이 나네요.
해당 모듈에서 한번 사용한 닉네임은 다시(다른회원이) 사용 못하게 금지된 닉네임으로 등록시키는 기능이 있는데, 1.8.4랑 5에서는 회원 정보 수정시에도 적용 되어 버리네요. 덕분에 해결 하였습니다. 감사합니다.

This issue was closed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

4 participants