그누보드5에서 선언되는 자바 전역변수 감추기

그누보드를 오랫동안 쓰면서… 그누보드처럼 보이지 않도록 하기 위해서 여러가지 방법을 사용했다. 우선  .htaccess를 통해서 경로를 조작하고, Short Url를 사용하도록 해서 기존에 사용하던 경로를 바꾸었다.

이렇게 하게 된 이유는 그누보드처럼 쉽게 경로가 인지되어서 그런지 소프트웨어적인 헤킹 공격이 경로를 따라서 들어오지 않나 하는 생각때문에..  그러다가 그누보드의 전역변수가 소스보기를 하면 쉽게 “그누보드 버전 몇이다” 이렇게 나타나서… 아래와 같이 경로를 감추게 되는 방법이 필요하다.

우선 기본으로 보이는 그누보드의 전역변수

  <script>
  // 자바스크립트에서 사용하는 전역변수 선언
  var g5_url       = "http://hansomang.localhost.com/__koa";
  var g5_bbs_url   = "http://hansomang.localhost.com/__koa/bbs";
  var g5_is_member = "1";
  var g5_is_admin  = "super";
  var g5_is_mobile = "";
  var g5_bo_table  = "m1_2";
  var g5_sca       = "";
  var g5_editor    = "froala";
  var g5_cookie_domain = "";
    </script>

파일 다운로드… php파일인데… pack시켜주는 함수다.

https://github.com/tholu/php-packer/blob/master/src/Packer.php

위 github에서 src에 있는 Packer.php를 다운로드 받아서 그누보드의 extend에 넣어준다. 

 

그리고 전역변수를 넣는 자리에 아래와 같이 변경한다. 그누보드5 기준

  <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>

이렇게 하고서 소스보기를 하면 아래와 같이 나타난다.

  <script>
    eval(function(p,a,c,k,e,d){e=function(c){return c.toString(36)};if(!''.replace(/^/,String)){while(c--){d[c.toString(a)]=k[c]||c.toString(a)}k=[function(e){return d[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}('0 b="2://3.4.5/6";0 8="2://3.4.5/6/9";0 a="1";0 c="d";0 e="";0 f="g";0 h="";0 i="j";0 7="";',20,20,'var||http|hansomang|localhost|com|__koa|g5_cookie_domain|g5_bbs_url|bbs|g5_is_member|g5_url|g5_is_admin|super|g5_is_mobile|g5_bo_table|m1_2|g5_sca|g5_editor|froala'.split('|'),0,{}))
</script>