XPRESSENGINE

https://www.xpressengine.com/index.php?mid=tip&search_target=title_content&search_keyword=%EC%95%84%EC%9D%B4%EB%94%94&document_srl=22803787

 

xe 코드를 그냥 분석하고 실험으로 알아낸 해결방법은 다음과 같습니다. XE 에서 로그인 아이디를 두번 검사하고 있으며 각각 경고창을 띠워 주고 있었습니다.


1)  파일: ./common/js/xml_js_filter.js 
  • 수정내용
수정위치: 라인번호 26, //predefined rules 에서 userid 지정하는 라인
수정 전 :  'userid' => '/^[a-z]+[\w-]*[a-z0-9_]+$/i'
수정 후 : 'userid' => '/^[0-9a-zA-Z]+[\w-]*[a-z0-9_]+$/i'
  • 수정방법

최신버전 xe에서는 압축유틸리티 minify를 이용하고 있었습니다. 수정해야 할 대상은 xml_js_filter.js 이지만 실제로는 xe.js 로 합친 후 minify로 압축한 xe.min.js을 변경해 주어야 xe 에 실제로 반영되는 것입니다.

xe.js는 common.js + js_app.js + xml_handler.js + xml_js_filter.js 를 합친 것이며, xe.js 를 minify로 압축하여 만들어 진 것이 xe.min.js입니다. 실제 실행시 사용되는 파일은 xe.min.js이므로 xml_js_filter.js를 수정한 후에 minify를 이용하여 xe.min.js를 만들어 주어야 한다.

(1) xml_js_filter.js와 xe.js에서 동일하게 [0-9a-zA-Z]와 같이 수정해 주고

(2) minify를 다운로드 받아서 홈페이지에 설치하고

(3) minify를 실행시켜 xe.min.js를 만들어 주었습니다.

  • 수정결과

위와 같이 수정한 결과 로그인시 경고창이 없어졌지만 2차로 상단에 같은 경고문으로 잠시후 사라지는 경고창이 떳습니다. 물론 로그인도 안되면서... 다시 xe를 분석하여 다음 사항을 찾아 수정하게 되었습니다.

2)  파일: ./classes/validator/Validator.class.php 

  • 수정내용
수정위치: 라인번호 90, //predefined rules 에서 userid 지정하는 라인
수정 전 : 'userid' => '/^[a-z]+[\w-]*[a-z0-9_]+$/i'
수정 후 : 'userid' => '/^[0-9a-zA-Z]+[\w-]*[a-z0-9_]+$/i'
  • 수정결과

위와 같이 수정한 결과 로그인시 2차 경고창이 없어지고 정상적인 로그인이 가능하게 되었습니다. 코드를 보면 수정하기 전에는 아이디 첫글자는 반드시 영문 소문자만 가능하도록 되어 있었습니다. 수정후에는 숫자, 영소문자, 영대문자로 시작하더라도 로그인과정을 통과할 수 있게 되었습니다.