포럼
SSL 설치후 장점과 문제점
2012.08.16 22:56
장점 : 회원수 폭발적으로 증가
SSL 작업 후 IE 보안경고창이 불편해서 Captcha 애드온을 껏더니 하루만에 400여명이 회원가입하십니다...^^
대단히 큰 장점 같아요. SSL은 결코 로봇을 막아주지 않습니다.
문제점
보안모드를 풀로 "항상 사용"하게 되면 사이트 로딩시간이 지연되기 때문에 "선택적으로"를 지정하게 됩니다.
그러면 회원가입과 로그인, 정보수정 등이 보안포트(https)로 진입하게 되지요.
예상대로라면(ex:로그인,회원가입 페이지 진입후 다시 되돌아간다면) 이후 주메뉴(GNB) 또는 서브 메뉴(LNB)를 클릭하여 다른 페이지에 접속할 때는 보안포트에서 빠져나오기를 기대했지만 그렇지 않습니다. current_url, request_uri 이 여전히 보안포트로 설정되어 있기 때문에 https는 지속됩니다.
var current_url = "https://~~~~
var request_uri = "https://~~~~
"선택적으로"가 가지는 기대값은 미리 선택된 환경이 아닌 다른 모듈 페이지 진입시 http 로 접속되는 것입니다.
임시로 사이트 로고에 지정했던 {getUrl()} 을 {getUrl('','mid','mid명')} 로 변경하면 https 에서 빠져나올 수 있습니다...^^
※ 공홈에서도 테스트 가능
추가 :
또는 로그인 위젯에 포함되어 있는
<p cond="$ssl_mode" class="securitySignIn <!--@if($ssl_mode)-->SSL<!--@else-->noneSSL<!--@end-->">
<button type="button" class="text" onclick="toggleSecuritySignIn(); return false;">{$lang->security_sign_in}</button>
</p>
이 부분을 살려서 토글시킵니다.
onclick에 설정된 toggleSecuritySignIn() 은 호스팅사용자에게는 적용되지 않습니다. 중간에 포트번호가 붙기 때문이지요.
※ xe.1.5.3.ko/xe/common/js/common.js 라인635 참조 (공홈과 같이 서버 인증서 사용자용)
/* 보안 로그인 모드로 전환 */
function toggleSecuritySignIn() {
var href = location.href;
if(/https:\/\//i.test(href)) location.href = href.replace(/^https/i,'http');
else location.href = href.replace(/^http/i,'https');
}
호스팅 사용자는 레이아웃에서 또는 위 파일에서 다음과 같이 추가하면 토글시킬 수 있습니다.
/* 보안모드 토글 */
function toggleSecuritySignInAddSSLPort() {
var href = location.href;
var ssl_port = ':'+https_port+'\/';
if(/https:\/\//i.test(href)) location.href = href.replace(/^https/i,'http').replace(new RegExp(ssl_port,'i'),'\/');
else location.href = 'https:\/\/'+location.host+':'+https_port+location.pathname+location.search;
}
레이아웃에서 직접 사용할 때는
{@
$ssl_mode = false;
if(preg_match('/^https:\/\//i',Context::getRequestUri())) $ssl_mode = true;
}
를 추가하여 포트상태를 검사해 보고 바로 아래에
<p class="securitySignIn">
<!--@if($act == 'dispMemberModifyPassword' || $act == 'dispMemberLoginForm' || $act == 'dispMemberSignUpForm' || $act == 'dispMemberModifyInfo' || $act == 'dispMemberFindAccount')-->
<a href="#">{$lang->security_sign_in}</a>
<!--@else-->
<a href="#" onclick="toggleSecuritySignInAddSSLPort(); return false;"><!--@if($ssl_mode)-->{$lang->security_sign_in}<!--@else-->{$lang->none_security_sign_in}<!--@end--></a>
<!--@end-->
</p>
처럼 삽입하면 토글버튼이 완성됩니다.
$lang->none_security_sign_in 은 언어팩에 자유롭게 추가하여 설정합니다.
로그인 위젯에서 사용하려면 login_info.class.php 파일에서 다음의 빨간색 if 문을 제거하고 사용합니다.
// ssl 사용시 현재 https접속상태인지에 대한 flag및 https url 생성
$ssl_mode = false;
if($this->member_config->enable_ssl == 'Y') {
if(preg_match('/^https:\/\//i',Context::getRequestUri())) $ssl_mode = true;
}
Context::set('ssl_mode',$ssl_mode);
^^...간단히 윗부분만 쓴다는 것이 좀더 부연설명하다보니 두서없이 설명했습니다. 참고가 되시기를....^^