웹마스터 팁
통합검색 사용 가부 설정 및 특정 그룹만 사용가능하게 제한 설정 기능 추가 - 보안이슈가 될 수 있는 부분
2015.04.10 10:00
원본글 : http://sejin7940.co.kr/index.php?mid=xe_tips&document_srl=103487
제 사이트의 글을 가져온거기에 말이 좀 짧을 수 있습니다.
-------------------------------------------------------------------
통합검색 사용여부 설정 가능하게 설정 추가 하였다.
레이아웃에서 통합검색 폼을 안 만들어두면 통합검색이 안 될듯하지만
실제 주소를 알면 어느 사이트든 통합검색이 가능해진다.
( 관련 주소는 혹시나 싶어 기재하지 않지만, 예를들어 XE 공홈도 통합검색이 가능하다.
물론 XE는 과거 통합검색을 허용했던 적이 있기에 노출가능한 게시판의 제한이 걸려 있어 문제는없지만.. )
물론 해당 유저가 통합검색 설정을 미리 해둬서 특정 게시판만 검색되도록 제한을 해뒀으면 무관하지만
어차피 통합검색을 안 쓸거라고 생각하고 특별히 설정을 하지 않은 경우는..
해당 사이트에 있는 모든 글과 댓글 들이 검색되어버린다.
물론 비밀글 처리되어있거나, 접근/보기 권한등이 막아두었다면.. 내용은 볼 수 없지만
(그래도 제목이 보인다는 것만으로도 짜증날 수 있다. . 심지어 댓글의 경우 3줄정도까지 내용이 다 보이고..)
진짜 문제 될 수있는건..
관리자가 자기 혼자 쓰려고, 노출되는 메뉴 에 넣지 않고 별도로 관리자만 아는 mid 주소로 빼둔 게시판 등이 있고
이 게시판에 대해 당연히 주소를 모를거라고 생각하고, 접근 권한을 막아두지 않은 경우 발생한다
당연히 이렇게만 해둬도 노출이 안 되는걸로 보이니.. 충분히 안심하고 있을 수 있는 상황일듯 싶다..
그런데, 이런 글은 검색을 통해 게시판을 찾을 수도 있고, 자칫하면 열람이 가능해져버리는 문제가 발생한다.
결국 XE 의 숙련도에 달려있는 부분인데, 자칫하면 꽤 애매한 보안문제가 생길 수 있다..
그래서 통합검색 자체의 기본설정을 '사용불가' 로 해두고.. ( 사용불가시에도 최고관리자는 사용 가능)
이를 사용하고픈 경우, 통합검색 모듈 설정에 와서, '전체 사용'으로 하면 손님도 사용 가능하고
'회원 사용'으로 허가한 경우, 하단에서 사용그룹 지정을 별도로 하여 특정그룹 또는 전체회원 이 사용가능하게 설정이 가능하다.
물론 기존에 통합검색을 자연스럽게 쓰던 사이트들은 관리자가 통합검색 모듈에서 가서 한번 설정을 해줘야하는 불편이 따르지만
그동안 통합검색 대상에 대한 제한을 안 걸어서 모든게 검색 될 수 있다는걸 이 기회에 알게 해주는 효과도 있고
보완 이슈가 될 수 있는 이상, 기존 사이트들에게 불편을 주더라도 막아 재설정하는게 맞다고 생각한다.
통합검색 사용여부 설정 가능하게 설정 추가
기본은 사용이 가능하지만
관리자가 통합검색 모듈 설정에서, 사용 불가로 설정가능하도록
1. modules/intergration_search/tpl/index.html 에서
<input type="hidden" name="xe_validator_id" value="modules/integration_search/tpl/index/1" />
아래에 추가
<div class="x_control-group">
<label class="x_control-label">{$lang->use}</label>
<div class="x_controls">
<select name="use">
<option value="N">{$lang->notuse}</option>
<option value="M" selected="selected"|cond="$config->use=='M'">{$lang->member} {$lang->use}</option>
<option value="Y" selected="selected"|cond="$config->use=='Y'">{$lang->all} {$lang->use}</option>
</select>
</div>
</div>
<div class="x_control-group">
<label class="x_control-label" for="use_group">{$lang->grant_access}</label>
<div class="x_controls">
<!--@foreach($group_list as $key_group=>$val_group)-->
<label for="target_group_srl_{$key_group}" style="float:left; margin-right:10px;"><input type="checkbox" name="use_group[]" id="target_group_srl_{$key_group}" value="{$key_group}" <!--@if(in_array($key_group,$config->use_group))-->checked<!--@end-->>{$val_group->title}</label>
<!--@end-->
<p class="x_help-inline">{$lang->about_grant_access}</p>
</div>
</div>
2. modules/integration_search/integration_search.admin.view.php 에서
function dispIntegration_searchAdminContent 함수 내부에
$security = new Security(); 위에다가 추가
$oMemberModel = &getModel('member');
$group_list = $oMemberModel->getGroups();
context::set('group_list',$group_list);
3. modules/integration_search/integration_search.admin.controller.php 에서
function procIntegration_searchAdminInsertConfig() 함수내에
$args = new stdClass; 아래에다가 추가
$args->use = Context::get('use');
$args->use_group = Context::get('use_group');
4. modules/integration_search/integration_search.view.php 에서
function IS() 안에
$config = $oModuleModel->getModuleConfig('integration_search');
아래에다가 추가
$logged_info = Context::get('logged_info');
if((!$config->use || $config->use=='N') && $logged_info->is_admin!='Y') {
return new Object(-1,'msg_not_permitted_act');
}
elseif($config->use=='M' && !$logged_info) {
return new Object(-1,'msg_not_permitted_act');
}
elseif($config->use=='M' && $config->use_group) {
$group_array = $config->use_group;
foreach($group_array as $key_group=>$val_group) {
$selected_group_srl = $group_array[$key_group];
if($logged_info->group_list && $is_use_group!='Y') {
$group_list = array_keys($logged_info->group_list);
if($group_list && count($group_list) && in_array($selected_group_srl , $group_list)) {
$is_use_group = 'Y';
break;
}
}
}
if($is_use_group != 'Y') return new Object(-1,'msg_not_permitted_act');
}
5. modules/integration_search/lang/lang.xml 추가
<item name="about_grant_access">
<value xml:lang="ko"><![CDATA[회원만 사용하게 설정가능한 경우 사용 그룹 제한 가능. 설정이 안 되어있으면 모든 회원이 가능]]></value>
</item>
제목 | 글쓴이 | 날짜 |
---|---|---|
즐겨찾기 소스 - 파비콘등록 | soroweb | 2015.04.16 |
누리고 쇼핑몰 상품취소 혹은 반품시 마일리지 자동회복하기 [6] | garnecia | 2015.01.21 |
확장변수에 시분초 추가하기 [1] | 해떨 | 2015.04.15 |
JS로 IE 6,7,8 구분하기 [4] | 키스투엑스이 | 2015.04.14 |
|웹폰트(네이버 맑은 고딕, 나눔고딕) 적용하기 [1] | 다큰왕자 | 2014.03.18 |
나눔고딕 웹 폰트 적용하기. [10] | 정찬명 | 2011.12.15 |
에디터에서 URL 클릭시 "http://" 삭제하는 방법 [2] | 콜롬보. | 2015.03.13 |
통합검색 사용 가부 설정 및 특정 그룹만 사용가능하게 제한 설정 기능 추가 - 보안이슈가 될 수 있는 부분 [1] | sejin7940 | 2015.04.10 |
요청한 기능을 실행할 수 있는 권한이 없습니다. - 오류해결 | I-JEX | 2015.04.10 |
댓글 새로고침 수정 [22] | Lansi | 2013.09.06 |
메인 로고 및 메인 이미지 변경 방법 [1] | okcashbag042 | 2015.04.08 |
웹 재요청 방지 및 트래픽 감소를 위한 방법 | 마루디자인 | 2015.04.06 |
setModule() 오류 발생시 | qkrcjfgus33 | 2015.04.04 |
ie11에서 통합검색시 page가 바뀌면 검색키워드가 없어지거나 이상한 글자로 바뀌는 것에 대한 팁 | garnecia | 2015.04.03 |
[고급] 내 XE 모듈에 editor 삽입하기 [8] | 개발해보쟈 | 2013.01.22 |
스케치북게시판 최신버전에 네이트온 /마이피플/플립보드 추가하는 방법 [4] | 가을풍경 | 2015.03.09 |
로고 만들기 귀찮을때^^* [1] | 수백 | 2015.03.06 |
[스케치북5] 댓글 수정 간략화하기.. (새로고침 없이 하는 방법 추가) [16] | XE만세 | 2014.01.05 |
php 5.6에서 인증메일 SMTP 연결에 실패할때.. | 루비스코 | 2015.03.31 |
한국 ip list 범위 체크 및 데이터 갱신 | 마루디자인 | 2015.03.30 |
정말 좋은 팁입니다!!! 그동안 보안 때문에 통합 검색 모듈을 제거하고 사용하고 있었는데 세진님 덕분에 다시 설치해야겠네요. 감사합니다.