테스트 사이트 - 개발 중인 베타 버전입니다

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

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

[code]
<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>
[/code]

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

[code]
<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>
[/code]

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

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

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

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

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

[code]
<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>
[/code]


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

[code]
<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>
[/code]

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

댓글 7개

9년 전
찾던 부분이었는데..정말 감사합니다!!
9년 전
도움이 되신다니 반갑습니다.
9년 전
좋은 팁입니다^^ 감사합니다
혹시 해당 아래부분의
<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파일들도 저런식으로 처리할수있을까요?
9년 전
일단 <script src="<?php echo G5_JS_URL ?>/jquery-1.8.3.min.js"></script>는 그냥 두시고, 아래처럼 하시면 될 듯 싶은데요...

[code]
<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>
[/code]


* 근데 이런 식으로 불러오면 되는게 있고 안되는게 있고 그렇습니다. 경험상 packed된 min.js들은 안되더라고요. 아직 배움이 부족하여, 정확히 왜 그런건지는 잘 모르겠습니다.
좋은 팁이네요
멋진팁!
php 7 이상 버전에서도 정상 작동하나요??

게시글 목록

번호 제목
23254
23244
23241
23236
23200
23199
23179
23174
23138
23128
23125
23116
23109
23099
23092
23083
23079
23063
23050
23036
23029
23007
23003
22983
22959
22943
22939
22934
22905
22897