https://github.com/xpressengine/xe-core/pull/1964

 

제가 최근에 XE타운에서 목격한 비밀글인데 내용이 여전히 보이는 문제와 연관된 건가요 ?

사이트문의에 제가 문의했던 내용인데요.

 

작성자가 처음에 공개로 했다가 비공개로 전환한 경우 공개일때 본 사람은 로그아웃 하기 전까지 비밀글 내용이 다 보인다고 답변을 받았는데요. 이게 이 패치와 관련이라면 좀 문제가 있긴 한데 

 

뭐 어차피 이미 본사람이라 별 생각기 없다고 생각하시는 분이 있을테지만

민감한 내용이 잠시 짧은 시간 노출되었다라도 다시 비밀글로 전환되면 다시 정보가 노출되지 않아야 한다고 생각하는 분도 있을 겁니다.

 

정보내용이 조금 긴 비밀스러운 댓글의 경우 빠르게 비밀글 체크 후에는 다시 비밀이 보장되는게 맞는거 같긴한데요.

 

제가 사이트문의에 남기고 받은 답변이 사실 납득이 가지 않아서요.

 

 

  • Lv30
    https://xetown.com/contact/508940
  • Lv36

    해당 패치는 동일 페이지 내에서 getGrant()를 반복 호출하는 것만 막아줍니다. 일부 위젯이나 게시판 스킨에서 저걸 한 페이지당 수십 번씩 반복 요청하거든요.

     

    별도의 캐시에 저장하는 것이 아니라 클래스 속성으로 저장할 뿐이므로, 페이지 요청이 끝나면 캐시도 사라집니다. 따라서 아까 읽었던 글을 다시 읽는 경우에는 해당되지 않습니다.

     

    비밀글이 아니었던 글이 비밀글로 변경된 경우 세션에 남아 있더라도 권한을 다시 체크하도록 하려면 별도로 패치가 필요할 듯 합니다.

  • Lv36 Lv30
    이번 패치와 상관없던 기존부터 있던 문제라는 건가요 ? 저의 사이트에서는 이런 경우를 경험하지 못했거든요. 여기 XE타운에서 얼마전에 제가 문의를 남겼을때 처음 본 현상입니다.
  • Lv30 Lv36

    라이믹스에서만 발생하는 문제인지도 모르겠습니다. 확인해 볼게요.

  • Lv36 Lv30
    이번 패치와 관련 없는 거라는거죠 ?
  • Lv30 Lv36
    https://github.com/xpressengine/xe-core/blob/master/modules/comment/comment.item.php#L151

    문제와 관련있는 소스입니다. XE 구버전, XE 최신버전, 라이믹스 모두 동일합니다.
    현재 댓글 상태와 무관하게 세션에 저장된 값을 가장 먼저 확인하는군요.
  • Lv36 Lv6
    고치는게 그렇게 어려울거 같지는 않네요 xe쪽에서 바꿔줄지는 의문이지만 ㅎㅎ
  • Lv36 Lv30

    그럼 제가 저희 사이트에서는 사례를 목격하지 못해 모르고 있었던 내용이네요. 저희는 민감한 정보를 비밀댓글로 많이 주고 받거든요....  제가 권한있는 계정으로 늘 보다보니 회원분들 중에서는 비밀댓글이 보여지는 현상을 목격한 분도 많았을거라 생각되어지네요.

  • Lv6 Lv36
    세션 체크하는 코드를 제거하거나 우선순위를 낮추면 비밀글이 아닌 대부분의 상황에서 불필요한 처리가 발생하여 성능이 나빠집니다.

    성능에 영향을 주지 않도록 바꾸는 방법도 있을 것 같긴 한데, XE에 알려줘도 언제 적용될지 기약이 없으니 라이믹스에서 우선 시도해 보겠습니다.
  • Lv36 Lv6
    그렇군요 기왕이면 세션에서 권한체크를 해주면 훨씬 빠르겠네요 ^^

    참 어렵습니다.
  • Lv6 Lv36

    세션을 그대로 사용하되, 댓글이 수정되어 last_update 값이 바뀌면 세션에 저장해둔 값을 무효화하도록 수정했습니다.

     

    https://github.com/rhymix/rhymix/commit/6df32746c339242a6adf422bd32fff182198c5fe

  • Lv30 Lv36
    라이믹스 develop 브랜치에서 수정되었습니다. 한 번 본 글이나 댓글이라도 비밀글로 바뀌면 세션에 남아있는 권한이 무효화됩니다. (comment.item.php 부분만 적용하면 됩니다.)

    https://github.com/rhymix/rhymix/commit/6df32746c339242a6adf422bd32fff182198c5fe
  • Lv36 Lv30
    오늘 @BNU 님께서 자주 들리시던데요. 아마도 보안패치 문제점 때문이시겠죠.. 가급적 호출 하지 않으려 하지만... XE에서 이걸 반영해주시면 좋겠지만 말씀하신대로 언제 될지 알 수 없는 ... 뭐 그런 상황...
    일단 저는 XE에서 반영되길 기대하며 기다려보겠습니다.
  • Lv36 ?
    엄청난 반영속도에 감탄했습니다.
  • Lv6

    이거 원래 있었던 겁니다. 저도 이거때문에 늘 문의 많이 받아요

    한번이라도 그 대글을 보면 세션에 권한이 남는 문제 때문에 당연히 보이는게 맞다고 하더군요

    로그아웃하면 그래서 안보이는 거구요

  • Lv6 Lv30
    근데 제가 문의했을때 답변도 그렇고 이걸 왜 다시 비밀글로 보고 싶다면 로그아웃을 하면 된다. 문제가 있다라는 의식이 없는지 저는 신기하네요.
  • Lv30 Lv6
    애초에 xe는 계속 있었던건데, 다시 생각해보면 한번이라도 본사람은 비밀글전이니깐 권한이 있다
    논리적으로는 틀린말은 아니죠. ^^;;
  • Lv6 Lv30

    빨리 비밀글로 보여지길 바라는 사람은 비밀글 체크한 사람이고 비밀글로 보려면 열람하는 사람이 굳이 로그아웃을 해야 하는건데요. 논리적으로 굉장히 이해하기 어려운 상황입니다.

     

    이미 게시자 실수로 일부를 봤더라도 게시자가 다시 비밀글로 하고 싶다면 이게 반영이 빨리 되어야 하는거 아닐까요 ? 전부 봤다고 치부하기엔....

  • Lv30 Lv6
    이걸 해결하려면 코멘트 권한체크떄 세션 체크 다음에 한번더 권한체크를 하는걸 해야 할거 같아요
  • Lv6 Lv30
    네. 저는 이건 문제로 봐야하지 시스템의 한계로 봐서는 안된다는 생각이어서요..
  • Lv30 Lv6

    시스템의 한게는 아니고 처음 개발자의 생각이 그렇게 생각되어서 그런거 같아요

     

    저기서 세션체크하는곳에 return true만 주석처리해도 해결될 문제네요 

  • Lv6
    와 그런데 정말 xe타운은 댓글이 새로고침 이런거 필요없을정도로 빠르게 달리네요
    내 서버는 왜 이게 안될까.. ㅠ.ㅠ