[10원짜리팁] sideview 원래 아이디 숨기기 기능(구글링방지) > 그누보드5 팁자료실

그누보드5 팁자료실

[10원짜리팁] sideview 원래 아이디 숨기기 기능(구글링방지) 정보

[10원짜리팁] sideview 원래 아이디 숨기기 기능(구글링방지)

본문

안녕하세요, 그누보드로 사이트를 운영하다보면 

간혹 본인의 아이디가 네이버,구글등에 노출 되었다는 문의를 접하게 되면서

sideview의 링크에 의해서 웹문서URL에 노출된다는것을 알게 되었습니다.

 

이를 개선하기 위해 mb_no을 이용하는 방법과 mb_nick을 이용하는 방법등을 고민하다가

현재 제가 사용하는 형태를 알려드리고 함께 고민해서 더 나은 방법을 찾아보고자

하는 취지에서 팁자료실에 공개합니다.

 

일단 lib/common.lib.php 에 보면

get_sideview의 수정코드를 올립니다.

 


// 회원 레이어
function get_sideview($mb_id, $name='', $email='', $homepage='')
{
    global $config;
    global $g5;
    global $bo_table, $sca, $is_admin, $member;
    $email = get_string_encrypt($email);
    $homepage = set_http(clean_xss_tags($homepage));
    $name     = get_text($name, 0, true);
    $email    = get_text($email);
    $homepage = get_text($homepage);
    $tmp_name = "";
    $en_mb_id = $mb_id;
    $ed = new str_encrypt();
    $mb_id = $ed->encrypt($mb_id);
    if($mb_id){
        $mb_id = "@".$mb_id;
    }
    if ($mb_id) {
        //$tmp_name = "<a href=\"".G5_BBS_URL."/profile.php?mb_id=".$mb_id."\" class=\"sv_member\" title=\"$name 자기소개\" rel="nofollow" target=\"_blank\" onclick=\"return false;\">$name</a>";
        $tmp_name = '<a href="'.G5_BBS_URL.'/profile.php?mb_id='.$mb_id.'" class="sv_member" title="'.$name.' 자기소개" target="_blank" rel="nofollow" onclick="return false;">';
        if ($config['cf_use_member_icon']) {
            $mb_dir = substr($en_mb_id,0,2);
            $icon_file = G5_DATA_PATH.'/member/'.$mb_dir.'/'.get_mb_icon_name($en_mb_id).'.gif';
            if (file_exists($icon_file)) {
                $width = $config['cf_member_icon_width'];
                $height = $config['cf_member_icon_height'];
                $icon_file_url = G5_DATA_URL.'/member/'.$mb_dir.'/'.get_mb_icon_name($en_mb_id).'.gif';
                $tmp_name .= '<span class="profile_img"><img src="'.$icon_file_url.'" width="'.$width.'" height="'.$height.'" alt=""></span>';
                if ($config['cf_use_member_icon'] == 2) // 회원아이콘+이름
                    $tmp_name = $tmp_name.' '.$name;
            } else {
                if( defined('G5_THEME_NO_PROFILE_IMG') ){
                    $tmp_name .= G5_THEME_NO_PROFILE_IMG;
                } else if( defined('G5_NO_PROFILE_IMG') ){
                    $tmp_name .= G5_NO_PROFILE_IMG;
                }
                if ($config['cf_use_member_icon'] == 2) // 회원아이콘+이름
                    $tmp_name = $tmp_name.' '.$name;
            }
        } else {
            $tmp_name = $tmp_name.' '.$name;
        }
        $tmp_name .= '</a>';
        $title_mb_id = '['.$mb_id.']';
    } else {
        if(!$bo_table)
            return $name;
        $tmp_name = '<a href="'.get_pretty_url($bo_table, '', 'sca='.$sca.'&sfl=wr_name,1&stx='.$name).'" title="'.$name.' 이름으로 검색" class="sv_guest" rel="nofollow" onclick="return false;">'.$name.'</a>';
        $title_mb_id = '[비회원]';
    }
    $str = "<span class=\"sv_wrap\">\n";
    $str .= $tmp_name."\n";
    $str2 = "<span class=\"sv\">\n";
    if($mb_id)
        $str2 .= "<a href=\"".G5_BBS_URL."/memo_form.php?me_recv_mb_id=".$mb_id."\" onclick=\"win_memo(this.href); return false;\">쪽지보내기</a>\n";
    if($email)
        $str2 .= "<a href=\"".G5_BBS_URL."/formmail.php?mb_id=".$mb_id."&name=".urlencode($name)."&email=".$email."\" onclick=\"win_email(this.href); return false;\">메일보내기</a>\n";
    if($homepage)
        $str2 .= "<a href=\"".$homepage."\" target=\"_blank\">홈페이지</a>\n";
    if($mb_id)
        $str2 .= "<a href=\"".G5_BBS_URL."/profile.php?mb_id=".$mb_id."\" onclick=\"win_profile(this.href); return false;\">자기소개</a>\n";
    if($bo_table) {
        if($mb_id) {
            $str2 .= "<a href=\"".get_pretty_url($bo_table, '', "sca=".$sca."&sfl=mb_id,1&stx=".$mb_id)."\">아이디로 검색</a>\n";
        } else {
            $str2 .= "<a href=\"".get_pretty_url($bo_table, '', "sca=".$sca."&sfl=wr_name,1&stx=".$name)."\">이름으로 검색</a>\n";
        }
    }
    if($mb_id)
        $str2 .= "<a href=\"".G5_BBS_URL."/new.php?mb_id=".$mb_id."\" class=\"link_new_page\" onclick=\"check_goto_new(this.href, event);\">전체게시물</a>\n";
    if($is_admin == "super" && $mb_id) {
        $str2 .= "<a href=\"".G5_ADMIN_URL."/member_form.php?w=u&mb_id=".$en_mb_id."\" target=\"_blank\">회원정보변경</a>\n";
        $str2 .= "<a href=\"".G5_ADMIN_URL."/point_list.php?sfl=mb_id&stx=".$en_mb_id."\" target=\"_blank\">포인트내역</a>\n";
    }
    $str2 .= "</span>\n";
    $str .= $str2;
    $str .= "\n<noscript class=\"sv_nojs\">".$str2."</noscript>";
    $str .= "</span>";
    return $str;
}
 

 

핵심포인트부분은 그누보드lib을 보다보니 친절하게도

str_encrypt 라는 암복호화 소스가 있길래 이를 이용했습니다.

그리고 암복화화 구분을 두기위해서 id앞에 저는 @를 붙혀줬습니다.

 

    $ed = new str_encrypt();
    $mb_id = $ed->encrypt($mb_id);
    if($mb_id){
        $mb_id = "@".$mb_id;
    }

 

 

이렇게하면 작업의 근 70%는 끝났습니다.

 

 

 

이담에 sideview를 이용하는 페이지 부분 즉 id를 받는부분에

bbs/profile.php

bbs/formmail.php

get_member 하는 부분을


if (substr($mb_id,0,1) == "@"){
    $ed = new str_encrypt();
    $mb_id = $ed->decrypt($mb_id);
    $mb = get_member($mb_id);            
} else {
    $mb = get_member($mb_id);
}

 

memo_form.php


    if (substr($me_recv_mb_id,0,1) == "@"){
        $ed = new str_encrypt();
        $me_recv_mb_id = $ed->decrypt($me_recv_mb_id);
        $mb = get_member($me_recv_mb_id);            
    } else {
        $mb = get_member($me_recv_mb_id);
    }

 

bbs/new.php


$mb_id = isset($_GET['mb_id']) ? ($_GET['mb_id']) : '';
if (substr($mb_id,0,1) == "@"){
    $ed = new str_encrypt();
    $mb_id = $ed->decrypt($mb_id);        
}    
$mb_id = substr(preg_replace('#[^a-z0-9_]#i', '', $mb_id), 0, 20);

 

bbs/list.php

 


if ($sca || $stx || $stx === '0') {     //검색이면
    $is_search_bbs = true;      //검색구분변수 true 지정
    if (strstr($sfl,"mb_id") && substr($stx,0,1) == "@"){
        $ed = new str_encrypt();
        $stx = $ed->decrypt($stx);        
    }    
    $sql_search = get_sql_search($sca, $sfl, $stx, $sop);

 

같이 아이디가 @abadfwe 이런식으로 @가 붙어서 오는 아이디를 복호화해주는

작업을 해줬습니다. 끝입니다.

 

 

소스나 스킨 공개라는게 실력이 뽀록나는부분이라서 많이 부끄럽지만

지금까지 시원한 해결책이 없던것 같아서 제가 만든 방식을 오픈합니다.

조금이나마 사이트운영에 도움이 되셧으면 합니다. 

 

PS

참고로 이소스는 완벽한 암호화부분이 아닙니다 구글링을 막고자 하는 취지의

소스입니다.

 

 

 

추천
2

댓글 6개

전체 2,431 |RSS
그누보드5 팁자료실 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT