php如何对js实现高度混淆,javascript 混淆

关键词:javascript 混淆 JsObfuscator Jsmin custom_rhino.jar

现在基于javascript的应用越来越复杂,为了提高代码的安全性和下载速度,需要对代码进行混淆和压缩。以前研究过几天js混淆,现在项目需要又拉出来溜溜,发现不少问题。简单讨论下三种我找到的混淆方法,以及改进。

一、JsObfuscator 是一个可执行的混淆压缩器,主要进行变量,函数名替换,去掉注释空行换行,压缩率比较好 。有两个地方让我觉得不爽,它每次只能压缩一人文件,它还会在每个函数结束后加个“;”,这应该不符合js的语法。当然牛人可以写个程序循环处理,但不知道能不能生成自己想要得目录,不利于发布代码。可配置性差。

二、第二个常用的是jsmin,他又c版本和php两个版本,都是源码。像我这样做web基本把c交给老师了,最简单也得找个turbo c,好像也有人用.net给它写了个界面,还得装.net环境,c版也被pass了。       了解php开发的可以用php版了,刚好前两天学了下php,就现学现卖吧。

2.把jsmin.php放在apache的htdocs目录下。

3.写个compress.php

require 'jsmin.php';

// Output a minified version of example.js.          echo JSMin::minify(file_get_contents('1039map.js'));

?>

他直接把代码输出到页面,这有个鸟用啊,不过有源码,可以改造它的先天不良基因。      我给它加了两个方法,一个建文件夹(存放压缩后的代码),一个新建压缩文件,并改造了minify()方法。

///创建文件夹

public function createdir($dir)     {

if(file_exists($dir) && is_dir($dir)){         }

else{          mkdir ($dir,0777);         }

}

///创建文件

function creat_file($PATH,$name)     {

$sFile = $name;       if (file_exists($PATH.$sFile)) {        creat_file();       }

else {        $fp= fopen($PATH.$sFile,"w");        fclose($fp);       }

return $sFile;

}

//$js:压缩文件名 ,$folder :存储路径,$fileName :压缩后的文件名

public static function minify($js,$folder,$fileName) {

$jsmin = new JSMin($js);

$file = $jsmin->creat_file($folder,$fileName);

$content = $jsmin->min();

$fp = fopen($folder.$fileName, 'w+');

fwrite($fp, $content);

fclose($fp);

return $jsmin->min();      }

调用页面代码compress.php:

echo JSMin::createdir("js_compress");

echo JSMin::minify(file_get_contents('index.js'),"js_compress/",'index.js');

?>

当然你可以compress.php执行多个压缩 。

未完待续。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值