특정 게시판의 검색을 못하게 하려면... 정보
특정 게시판의 검색을 못하게 하려면...본문
게시판의 하단에 있는 검색기능을 죽여도 url을 이용해서 검색을 허더라구요.
익명 게시판의 경우 그런 기능을 이용해서 누가 쓴 글인지 추적(?)도 하구요.
그래서, 특정 게시판(helpme)의 경우 검색을 못하게 막으려 하는데
/bbs/list.php를 보니까 너무 많이 수정해야 되는지 참 난감하더라구요.
어디 한번 고치면 해결되는 방법이 없을까요???
댓글 전체
1. 가장 일반적인 우회방법은 '전체검색'을 통해 접근하는 것
2. 질문내용처럼 타 게시판에서 검색시 사용되는 url로 해당 게시판의 검색에 접근하는 것
답 : 전체검색 해제 + 해당 스킨에서 검색에 관한 구문을 삭제
(/skin/board/스킨이름/list.skin.php <<<=== 수정을 검토할 영역)
2. 질문내용처럼 타 게시판에서 검색시 사용되는 url로 해당 게시판의 검색에 접근하는 것
답 : 전체검색 해제 + 해당 스킨에서 검색에 관한 구문을 삭제
(/skin/board/스킨이름/list.skin.php <<<=== 수정을 검토할 영역)
검색구문을 삭제 했는데 url을 이용해서 접근하더라구요^^
관리자 게시판 설정의 "전체검색사용" 여부 체크하는것은 무용지물인가요?
전체검색사용을 안하게 해도 해당 게시판의 검색은 가능해요. 그것도 url로... -..-
어느 정도의 구조를 알고 있다면,
전체검색이 막혔을 경우 게시판 내에서,
타 게시판의 url을 활용하여 접근할 가능성은 큽니다.
(물론, 목록보기 및 읽기 권한이 가능해야 하겠지요.)
(예) 게시판 내 제목검색 and조건 ===>>> 키워드 : 연습
/bbs/board.php?bo_table=information&sca=&sfl=wr_subject&stx=%EC%97%B0%EC%8A%B5&sop=and
전체검색이 막혔을 경우 게시판 내에서,
타 게시판의 url을 활용하여 접근할 가능성은 큽니다.
(물론, 목록보기 및 읽기 권한이 가능해야 하겠지요.)
(예) 게시판 내 제목검색 and조건 ===>>> 키워드 : 연습
/bbs/board.php?bo_table=information&sca=&sfl=wr_subject&stx=%EC%97%B0%EC%8A%B5&sop=and
제가 원하는 것은 바로 이것을 막고 싶은 거에요. -..-a
'곱슬최씨'님의 방법을 적용해 보시기 바랍니다.
단, 테스트 해 본 결과 약간의 지연시간이 존재합니다.
단, 테스트 해 본 결과 약간의 지연시간이 존재합니다.

스킨에서 적용 가능할 것 같습니다.
파일 : skin/board/스킨/list.skin.php
상단에 다음 코드를 넣어주세요.
if($sfl) alert('검색하실 수 없습니다.');
특정 게시판만을 원하실 경우 다음과 같이 코드를 작성하시면 됩니다.
// 검색 막을 게시판 id
$no_search = array('helpme','test','noname');
if ( in_array($bo_table, $no_search) && ($sfl) ) alert('검색하실 수 없습니다.');
파일 : skin/board/스킨/list.skin.php
상단에 다음 코드를 넣어주세요.
if($sfl) alert('검색하실 수 없습니다.');
특정 게시판만을 원하실 경우 다음과 같이 코드를 작성하시면 됩니다.
// 검색 막을 게시판 id
$no_search = array('helpme','test','noname');
if ( in_array($bo_table, $no_search) && ($sfl) ) alert('검색하실 수 없습니다.');
특정 필드만 검색하지 못하게 수정하고 있습니다^^
익명 게시판을 만들어 뒀더니 이런 방법으로 누가 쓴 글인지 찾았다는... -..-a
오늘 아침에 제보(?)를 받고 깜짝 놀랐습니다. 이렇게 사용자들이 영특할 수가...
익명 게시판을 만들어 뒀더니 이런 방법으로 누가 쓴 글인지 찾았다는... -..-a
오늘 아침에 제보(?)를 받고 깜짝 놀랐습니다. 이렇게 사용자들이 영특할 수가...
wr_id, wr_name은 실제 의미가 없습니다.
익명게시판(회원이 아닌 비회원인 경우를 생각한다면)이라면,
IP로 검색했을 가능성이 큽니다.
물론 동일한 IP인 경우만 체크해 본 것이 아니라,
비슷한 시각대(또는 이전의 경우도 비교 검토)에,
비슷한 IP대역에서 게시물 작성자의 행동을 추정할 수 있기 때문입니다.
관련 예1 : sir.co.kr/bbs/board.php?bo_table=cm_free&sca=&sfl=wr_ip&stx=211.+.39.127&sop=and
관련 예2 : http://sir.co.kr/bbs/board.php?bo_table=cm_free&sca=&sfl=wr_ip&stx=211.+.39.+&sop=and
익명게시판(회원이 아닌 비회원인 경우를 생각한다면)이라면,
IP로 검색했을 가능성이 큽니다.
물론 동일한 IP인 경우만 체크해 본 것이 아니라,
비슷한 시각대(또는 이전의 경우도 비교 검토)에,
비슷한 IP대역에서 게시물 작성자의 행동을 추정할 수 있기 때문입니다.
관련 예1 : sir.co.kr/bbs/board.php?bo_table=cm_free&sca=&sfl=wr_ip&stx=211.+.39.127&sop=and
관련 예2 : http://sir.co.kr/bbs/board.php?bo_table=cm_free&sca=&sfl=wr_ip&stx=211.+.39.+&sop=and
$no_search_board = array('helpme','no_oneline','noname');
$no_search_field = array('wr_id','wr_name');
if ( in_array($bo_table, $no_search_board) && in_array($sfl, $no_search_field) ) alert('해당 항목은 검색하실 수 없습니다.');
이런식으로 수정해서 /bbs/list.php의 앞에 넣었더니... 안되네요. 뭐가 잘못된 것인가요??
helpme, no_oneline, noname 게시판에서 wr_name, wr_id 검색을 막고 싶은 경우인데...
$no_search_field = array('wr_id','wr_name');
if ( in_array($bo_table, $no_search_board) && in_array($sfl, $no_search_field) ) alert('해당 항목은 검색하실 수 없습니다.');
이런식으로 수정해서 /bbs/list.php의 앞에 넣었더니... 안되네요. 뭐가 잘못된 것인가요??
helpme, no_oneline, noname 게시판에서 wr_name, wr_id 검색을 막고 싶은 경우인데...

wr_id 가 아니라 mb_id 일껍니다.
아~ 그렇네요^^ 수정했어요. 그런데, 해당 조건이 되었는데 alert가 안뜨네요. -..-a
helpme 게시판에서 이름으로 검색하면 alert가 떠야 하쟎아요?... php 어렵네요
<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
$no_search_board = array('helpme','no_oneline','noname');
$no_search_field = array('mb_id','wr_name');
//if ( in_array($bo_table, $no_search_board) && $sfl ) alert('해당 항목은 검색하실 수 없습니다.');
if ( in_array($bo_table, $no_search_board) && sfl && in_array($sfl, $no_search_field) ) alert('해당 항목은 검색하실 수 없습니다.');
$bo_table에 $bo_search_board의 게시판 이름이 있거나 $sfl에 값이 있으면서
그 값이 $bo_search_field에 있으면... 경고 때린다... 틀린 것이 없는거 같은데 안되네요
helpme 게시판에서 이름으로 검색하면 alert가 떠야 하쟎아요?... php 어렵네요
<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
$no_search_board = array('helpme','no_oneline','noname');
$no_search_field = array('mb_id','wr_name');
//if ( in_array($bo_table, $no_search_board) && $sfl ) alert('해당 항목은 검색하실 수 없습니다.');
if ( in_array($bo_table, $no_search_board) && sfl && in_array($sfl, $no_search_field) ) alert('해당 항목은 검색하실 수 없습니다.');
$bo_table에 $bo_search_board의 게시판 이름이 있거나 $sfl에 값이 있으면서
그 값이 $bo_search_field에 있으면... 경고 때린다... 틀린 것이 없는거 같은데 안되네요

if ( in_array($bo_table, $no_search_board) && sfl && in_array($sfl, $no_search_field) ) alert('해당 항목은 검색하실 수 없습니다.');
중간에 && sfl && 요게 들어가있네요? ㅎㅎㅎ
중간에 && sfl && 요게 들어가있네요? ㅎㅎㅎ
if ( in_array($bo_table, $no_search_board) && $sfl && in_array($sfl, $no_search_field) ) alert('해당 항목은 검색하실 수 없습니다.');
-..- 알려주신 것은 제가 질답에 옮기면서 생긴오류고 실제 code는 지적하신대로 위에 처럼 했어요. 그러네 안되는 거라... 으~ 딴일이 안되네요. 마음이 심란해져서...
-..- 알려주신 것은 제가 질답에 옮기면서 생긴오류고 실제 code는 지적하신대로 위에 처럼 했어요. 그러네 안되는 거라... 으~ 딴일이 안되네요. 마음이 심란해져서...

이런경우 echo $sfl; 해서 변수값을 출력해보면 원인을 알아내기가 수월합니다.
회원아이디로 검색하는경우 echo $sfl; 해보면 다음과 같은 결과가 나옵니다.
mb_id,1
이제 검색창 부분 소스를 보면 아래와 같이 되어있습니다.
<option value='wr_subject'>제목</option>
<option value='wr_content'>내용</option>
<option value='wr_subject||wr_content'>제목+내용</option>
<option value='mb_id,1'>회원아이디</option>
<option value='mb_id,0'>회원아이디(코)</option>
<option value='wr_name,1'>이름</option>
<option value='wr_name,0'>이름(코)</option>
따라서 $no_search_field = array('mb_id','wr_name'); 부분을 아래와 같이 수정해주셔야 합니다.
$no_search_field = array('mb_id,1','mb_id,0','wr_name,1','wr_name,0');
회원아이디로 검색하는경우 echo $sfl; 해보면 다음과 같은 결과가 나옵니다.
mb_id,1
이제 검색창 부분 소스를 보면 아래와 같이 되어있습니다.
<option value='wr_subject'>제목</option>
<option value='wr_content'>내용</option>
<option value='wr_subject||wr_content'>제목+내용</option>
<option value='mb_id,1'>회원아이디</option>
<option value='mb_id,0'>회원아이디(코)</option>
<option value='wr_name,1'>이름</option>
<option value='wr_name,0'>이름(코)</option>
따라서 $no_search_field = array('mb_id','wr_name'); 부분을 아래와 같이 수정해주셔야 합니다.
$no_search_field = array('mb_id,1','mb_id,0','wr_name,1','wr_name,0');
아... 그렇구나... 팁에 정리해서 올렸습니다. 너무 감사합니다.
요즘엔 사용자들이 너무 영특해져서 운영자가 참 힘드네요. ㅋㅋ
요즘엔 사용자들이 너무 영특해져서 운영자가 참 힘드네요. ㅋㅋ