그누보드5 자바스크립트에서 사용하는 전역변수 선언 내용을 숨기기는 것은 아니고 알아보기 어렵게 만들기 > 그누보드5 팁자료실

그누보드5 팁자료실

그누보드5 자바스크립트에서 사용하는 전역변수 선언 내용을 숨기기는 것은 아니고 알아보기 어렵게 만들기 정보

그누보드5 자바스크립트에서 사용하는 전역변수 선언 내용을 숨기기는 것은 아니고 알아보기 어렵게 만들기

첨부파일

Packer.php (23.3K) 176회 다운로드 2016-09-05 16:30:36

본문

https://github.com/tholu/php-packer 를 이용해 그누보드5 자바스크립트에서 사용하는 전역변수 선언 내용을 알아보기 어렵게 만드는 방법


<script>
// 자바스크립트에서 사용하는 전역변수 선언
var g5_url       = "//sir.kr";
var g5_bbs_url   = "//sir.kr/bbs";
var g5_is_member = "1";
var g5_is_admin  = "";
var g5_bo_table  = "g5_tip";
var g5_sca       = "";
var g5_editor    = "";
var g5_cookie_domain = ".sir.kr";
var g5_plugin_url = "//sir.kr/plugin";
var g5_mb_open   = "0";
var g5_time_ymd = "2016-09-05";
var g5_time_ymdhis = "2016-09-05 15:32:22";
var g5_download_level = 1;
var g5_download_point = 0;
var g5_is_mobile = false;
var g5_download_level = 1;
var g5_download_point = 0;
</script>


그누보드5 소스보기에서 자바스크립트에서 사용하는 전역변수가 위와 같이 보이는 것을 아래와 같이 바꿔서 출력해 준다.


<script>
eval(function(p,a,c,k,e,r){e=function(c){return c.toString(a)};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('2 f="//3.4";2 h="//3.4/j";2 k="1";2 q="";2 r="a";2 b="";2 c="";2 d=".3.4";2 e="//3.4/t";2 g="0";2 i="5-6-7";2 m="5-6-7 n:o:p";2 8=1;2 9=0;2 s=l;2 8=1;2 9=0;',30,30,'||var|sir|kr|2016|09|05|g5_download_level|g5_download_point|g5_tip|g5_sca|g5_editor|g5_cookie_domain|g5_plugin_url|g5_url|g5_mb_open|g5_bbs_url|g5_time_ymd|bbs|g5_is_member|false|g5_time_ymdhis|15|32|22|g5_is_admin|g5_bo_table|g5_is_mobile|plugin'.split('|'),0,{}))
</script>


1. https://github.com/tholu/php-packer로 가서 파일을 다운받는다.

  필요한 파일은 src폴더에 있는 Packer.php (첨부해 두었음)

2. Packer.php 를 그누보드 extend 폴더에 넣는다.

3. head.sub.php의 아래 내용을 다음과 같이 수정해준다.

- 수정전 ----------------------------------------------------------------------


<script>
// 자바스크립트에서 사용하는 전역변수 선언
var g5_url       = "<?php echo G5_URL ?>";
var g5_bbs_url   = "<?php echo G5_BBS_URL ?>";
var g5_is_member = "<?php echo isset($is_member)?$is_member:''; ?>";
var g5_is_admin  = "<?php echo isset($is_admin)?$is_admin:''; ?>";
var g5_is_mobile = "<?php echo G5_IS_MOBILE ?>";
var g5_bo_table  = "<?php echo isset($bo_table)?$bo_table:''; ?>";
var g5_sca       = "<?php echo isset($sca)?$sca:''; ?>";
var g5_editor    = "<?php echo ($config['cf_editor'] && $board['bo_use_dhtml_editor'])?$config['cf_editor']:''; ?>";
var g5_cookie_domain = "<?php echo G5_COOKIE_DOMAIN ?>";
<?php if(defined('G5_IS_ADMIN')) { ?>
var g5_admin_url = "<?php echo G5_ADMIN_URL; ?>";
<?php } ?>
</script>



- 수정 후 ----------------------------------------------------------------------


<script>
<?php
$js_global_vars  = '';
$js_global_vars .= 'var g5_url       = "'.G5_URL.'";'.PHP_EOL;
$js_global_vars .= 'var g5_bbs_url   = "'.G5_BBS_URL.'";'.PHP_EOL;
$js_global_vars .= 'var g5_is_member = "'.(isset($is_member)?$is_member:'').'";'.PHP_EOL;
$js_global_vars .= 'var g5_is_admin  = "'.(isset($is_admin)?$is_admin:'').'";'.PHP_EOL;
$js_global_vars .= 'var g5_is_mobile = "'.G5_IS_MOBILE.'";'.PHP_EOL;
$js_global_vars .= 'var g5_bo_table  = "'.(isset($bo_table)?$bo_table:'').'";'.PHP_EOL;
$js_global_vars .= 'var g5_sca       = "'.(isset($sca)?$sca:'').'";'.PHP_EOL;
$js_global_vars .= 'var g5_editor    = "'.(($config['cf_editor'] && $board['bo_use_dhtml_editor'])?$config['cf_editor']:'').'";'.PHP_EOL;
$js_global_vars .= 'var g5_cookie_domain = "'.G5_COOKIE_DOMAIN.'";'.PHP_EOL;
if(defined('G5_IS_ADMIN')) {
$js_global_vars .= 'var g5_admin_url = "'.G5_ADMIN_URL.'";';
}
$js_global_vars2 = new Tholu\Packer\Packer($js_global_vars, 'Normal', true, false, true);
$js_global_vars3 = $js_global_vars2->pack();
echo  $js_global_vars3;
?>
</script>
추천
3

댓글 7개

좋은 팁입니다^^ 감사합니다
혹시 해당 아래부분의
<script src="<?php echo G5_JS_URL ?>/jquery-1.8.3.min.js"></script>
<script src="<?php echo G5_JS_URL ?>/jquery.menu.js"></script>
이런 js파일들도 저런식으로 처리할수있을까요?
일단 <script src="<?php echo G5_JS_URL ?>/jquery-1.8.3.min.js"></script>는 그냥 두시고, 아래처럼 하시면 될 듯 싶은데요...


<script src="<?php echo G5_JS_URL ?>/jquery-1.8.3.min.js"></script>
<?
$js_strs = '
<script src="'.G5_JS_URL.'/jquery.menu.js"></script>
<script src="'.G5_JS_URL.'/common.js"></script>
<script src="'.G5_JS_URL.'/wrest.js"></script>
';

$js_array = array_values(array_filter(array_map("trim",explode("\n", $js_strs))));
$packed_js = "";
foreach($js_array as $js_str){
	$packed_js .="$('head').append('".$js_str."');".PHP_EOL;
}
$packed_js = str_replace("/script>", "/' + 'script>", $packed_js);
$packed_js2 = new Tholu\Packer\Packer($packed_js, 'Normal', true, false, true); 
$packed_js3 = $packed_js2->pack(); 
?>
<script><?php echo $packed_js3; ?></script>



* 근데 이런 식으로 불러오면 되는게 있고 안되는게 있고 그렇습니다. 경험상 packed된 min.js들은 안되더라고요. 아직 배움이 부족하여, 정확히 왜 그런건지는 잘 모르겠습니다.
전체 2,428 |RSS
그누보드5 팁자료실 내용 검색

회원로그인

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