이 팁은 실 사용시에 문제가 될 수 있습니다

 

최신 버전에서 적용이 되지 않을 수 있으므로 사용을 자제해주세요

 

2021-07-28 추가 


================================



이거 때문에 애를 꽤나 먹었네요..

외부 php로 연동을 할때 www.example.com/abc.php 이런식으로 연동을 한다면 아래처럼 코드를 쓴다면 인식이 됩니다.

define('__XE__', true); 
require_once("./../config/config.inc.php"); 
$oContext = &Context::getInstance(); 
$oContext->init(); 

 

그런데, abc.example.com 이런식으로 서브도메인을 설정한다면 세션이 서브도메인까지 미치지 않아 로그인이 풀리게 되는것이죠..

 

캡처.PNG

 

위 사진처럼 www.도메인.com으로 고정되어있는 모습이 보이는데요

 

이를 수정하기 위해서 코어를 조금 건들였습니다.

(라이믹스 1.9.3인데 업데이트는 이제 글렀습니다.. ㅜㅡㅜ)

 

RHYMIX ROOT /common/framework/session.php

 

82번 라인 뒤에 아래 코드를

ini_set("session.cookie_domain", ".example.com");

 

그후 다음라인의 아래의 코드에 null 부분을

session_set_cookie_params($lifetime, $path, null, $ssl_only, false);

".example.com" 형태로 변경해주세요!

session_set_cookie_params($lifetime, $path, ".example.com", $ssl_only, false);

 

또한 보안상의 문재가 될수 있지만.. rx_sesskey1,2가 어디서 선언되는지 찾을수 없어 저는 이 기능을 껐습니다.

시스템 설정 -> 고급 설정 -> 세션 보안키 사용 -> 아니오

rx_sesskey가 설정되는 부분을 찾을수가 없어서;; 아시는 분은 댓글 달아주시면 감사드리겠습니다!

 

또 SSO 기능은 켜주셔야 합니다. (그래야 session 설정을 건너뛸수 있더라고용!)

시스템 설정 -> SSO 사용 -> 예

 

일단은 야매로 해결본거라 이게 정답이 아닐수도 있습니다!

다른 더 좋은 해결방법 있으신분은 알려주세요!

리버스

profile
모듈 제작하는 현역 대학생 리버스입니다!

== 판매중인 모듈 ==
미션] https://xetown.com/thirdparties/1511787
길드] https://xetown.com/thirdparties/1387146
  • profile

    모듈이나 애드온도 아니고 common/framework 아래에 있는 "라이믹스 프레임워크" 소속 클래스를 직접 수정하는 팁은 99%의 확률로 뭔가 잘못하고 있는 것입니다.

     

    귀중한 팁글에 까칠한 댓글을 달게 되어 죄송하지만, 아직도 라이믹스를 그누보드마냥 쓰시는 분들이 너무 많아서 캠페인을 좀 해야 할 것 같습니다. PHP가 설치된 서버라면 어디서나 통하는 보편적인 설정 방법을 무시하고 코어 클래스를 임의로 수정하라고 알려주는 것은 독자를 심각한 보안취약점에 노출시키는 무책임한 행동일 수도 있습니다. 앞으로도 불필요하게 라이믹스 코어 수정을 권하는 글에는 어김없이 까칠한 댓글을 달도록 하겠습니다.

     

    1. php.ini에서 session.cookie_domain = .example.com 으로 설정하세요. 수정하신 코드에서 도메인 부분이 null로 되어 있는 것은 php.ini 설정을 참조한다는 뜻입니다. PHP로 만들어진 사이트라면 어떤 CMS라도 이게 정석입니다. php.ini를 수정할 수 없는 경우 config/config.user.inc.php 파일을 만들어서 ini_set() 하시면 됩니다.

    2. rx_sesskey{1,2} 쿠키도 당연히 php.ini의 session.cookie_domain 설정을 따라갑니다. 거기 한 군데만 설정해 주면 다른 곳은 전혀 건드릴 필요가 없습니다. 정석대로 하면 참 편합니다.

    3. 만약 위의 내용이 제가 드린 말씀대로 작동하지 않는다면 의도치 않은 버그가 있는 것이니 혼자 해결책을 찾아 헤매시지 말고 라이믹스 개발팀에게 신고해 주세요. 코어에서 제대로 수정되어야 나중에 업데이트하더라도 문제가 생기지 않을 테니까요! 버그를 발견하고도 혼자서만 고쳐 쓰는 분은 미워요~

    4. SSO 기능은 가능하면 사용하지 마세요. 제대로 작동하지도 않을뿐더러 계속 보안취약점만 일으키곤 하는 기능이라 폐기 일보 직전입니다. 동일한 도메인의 서브도메인끼리 로그인 상태를 공유하는 데는 SSO가 필요하지도 않습니다.

    5. 만에 하나 원하는 기능을 포기하는 한이 있더라도 코어는 반드시 업데이트하시기 바랍니다. 그동안 패치된 보안취약점 중 관리자 계정 털 수 있는 것도 있습니다. 기능 하나를 포기하실래요? 아니면 사이트를 통쨰로 포기하실래요?

  • profile profile

    옳으신 말씀이십니다;;
    그렇지만 설명해주신것처럼 해도 작동이 되지 않아.. 제 딴에서 고쳐본것이기에 이해해 주시면 감사드리겠습니다.

    앞으로 이런 오류가 발생하면 깃헙에 올려보도록 하겠습니다.

     

    먼저 1번에 경우 아래와 같이 설정 하였으나 PHPSESSID만 그와같이 적용될뿐 라이믹스 관련 쿠키는 적용되지 않았습니다,

    ddssa.PNG

    적용 하였으나

     

    ddssaaaa.PNG

    작동은 안됨

     

    2. 위에서 말씀드린것과 동일한 문제로 적용이 안됩니다.

     

    3. 이미 해결되었는지 몰라 지금이라도 이슈를 남길지 의문이네요..

    아직 해결이 안되어있으면 정리해서 올리겠습니다.

     

    4. SSO 기능을 켜야 소스를 덜 수정하게 되서 어쩔수 없이 켰습니다;;

    지적 감사합니다!

     

    5. 지당하신 말씀이십니다. 업데이트는 꼭 할수있도록 하겠습니다 ㅎㅎ