[텍스트큐브] PHP 7.3 이상에서 관리자 인증이 잘못되는 문제 깁기 (TC 1.10.10)

  앞서 올린 "[텍스트큐브] PHP 7.3으로 쓸 때의 사소한 문제와 심각한 보안 문제"에서 이야기한 대로 PHP 최신판을 쓸 때에는 텍스트큐브 1.10.10판이 관리자 인증이 잘 되지 않는 문제가 있습니다.

  PHP 7.3 이상에서 쓸 때에 텍스트큐브 1.10.10에 아이디와 비밀번호를 넣어 관리자로 인증(로그인)하면, 아이디와 비밀번호를 넣은 웹 누비개에서는 관리자로 인증되지 않습니다. 하지만 같은 아이피를 쓰는 모든 곳에서 이미 열려 있던 다른 모든 웹 누비개에서는 관리자로 들어갈 수 있게 됩니다.

  정확히 왜 그런지는 모르지만, 7.3으로 판올림한 PHP에서 세션(session) 기능에 달라진 점 때문에 세션 아이디를 붙이고 바꾸는 기능이 제대로 작동하지 못하는 것 같습니다.

  아래는 관리자 인증이 잘 되도록 고친 파일입니다.

  이 zip 압축 파일에 실린 Textcube.Control.Session.php 파일을

텍스트큐브_설치_경로/framework/legacy/

에 덮어 쓰면 됩니다.

  아래는 바꾸거나 더한 내용입니다.

  • 관리자 세션 아이디는 16진수 난수로 만들지 않고 session_regenerate_id 함수로 바꾸게 함
  • 세션 유효 시간($service['timeout'])이 지난 관리자 세션은 다시 접속했을 때 인증된 상태가 이어지지 않게 함
  • 세션 DB에 agent(웹 누비개, 운영체제 등의 정보)가 기록되게 함
    (세션 DB 용량이 늘어날 수 있음)

  PHP 7.2 이하에서 잘 작동하는지는 시험하지 못했습니다. 올바르지 않게 작동하는 데가 있으면 나중에 더 고칠 수 있습니다.

2020/03/22 23:58 2020/03/22 23:58
글 걸기 주소 : 이 글에 다른 글을 걸 수 없습니다

덧글을 달아 주세요

  1. 모아로그 2020/03/23 01:32 고유주소 고치기 답하기

    apache 2.4.18
    php 7.0.7
    mariadb 10.1.13

    환경에서 사용하는데 이상없이 동작하는군요.
    간혹가다 로그인이 풀리는 현상이 발생 되곤 하나 크게 불편한 점은 아니라,
    나중에 php 버전을 7.3으로 판올림 하게 된다면.유용한 정보일듯하여 먼저 찜합니다.
    좋은 정보 공유 감사합니다.

    • 팥알 2020/03/23 02:44 고유주소 고치기 답하기

      고맙습니다.
      PHP 판을 7.2보다 높게 올리지 않는다면 이 문제는 신경 쓰지 않아도 됩니다.
      하지만 어쩌면 로그인이 풀리는 현상에서 불씨가 있었을지 모르고, 저도 놓치고 있는 데가 있을 수 있습니다.