JSP中混杂HTML、JS、CSS删除各种代码注释

1.1 背景

前端页面往往混杂着JSP、HMTL、JS、CSS代码。这些代码都有着并不一致的注释方式。对于JSP和JS而言,其往往采用C语言是注释方式,如:

1 单行注释。插入单行注释的符号是“//”,举例如下:

<script type="text/javascript">

//*********

Code;

</script>

2 多行注释。多行注释以"/*"开始,以"*/"结束,举例如下:

<script type="text/javascript">

/* -----------------

*/

Code;

</script>

HTML注释方式为<!-- ************ -->,CSS的注释方式为/* ----*/。

目前,并没有发现针对JSP文件去除其中包含各种代码注释的工具。现有源软件中现阶段仅发现一些针对某一种特定程序,比如CSS、HTML、JS文件压缩的工具,这些工具中往往包含了删除代码注释的功能。

1.2 目的

为了解决JS、HMTL、CSS程序中可能夹带了敏感信息的问题,本文对几种前端程序压缩工具进行了调查,并提出了实施中存在问题,给出了建议。

第 2 章 前端代码删除注释工具

2.1 AHC

AHC(Absolute HTML Compressor)是Alentum软件公司的一款免费软件,它主要用户HTML文件的压缩,能够提供包括去除HTML注释,合并行、去除不必要的空格等功能。它可以操作于某个文件或者操作某个目录下筛选后的文件。根据下文中测试结果,该工具仅适合静态HTML页面,并不适合JSP页面。

对于HTML文件,初步测试后发现均处理成功

但通过该工具对某个目录中JSP文件进行处理,发现大部分JSP文件处理时会出现错误。

 

2.2 ESC

ESC(ECMAScript Cruncher)用于精简JS脚本代码,其开发语言为JScript。该工具也是一款开源软件,能够提供去除JS注释,合并行、去除不必要的空格等功能。根据下文中的测试结果, ESC删除JSP文件中的JS注释存在隐患,因此其主要操作范围为JS文件。

ESC运行时需要指定压缩级别,它一共包括5级,分别对应不处理、去除注释、去除空格、去除换行、变量替换。其中,去除注释对应1级。该程序需在DOS下运行,仅能对单一文件操作,执行指令为:

cscript ESC.wsf -l 1 [–ow outputfile] inputfile。

若需要操作目录中文件,需另行编制脚本。

用ESC操作JSP页面,仅选择删除脚本注释,测试结果发现能够删除页面中JS代码注释,也会删除JSP代码注释,但并不能删除html注释(<!-- -->)。对于某些情况,虽然执行结果没有报出错误,但是实际上对页面存在较大影响。如下面代码:

<%

} //end if

} //end for%>

如果用ESC删除页面中JS注释,则} //end for%> 这一行代码也将被删除,而该行中的%>字符是JSP页面中解释器的用于标识JSP代码块的结尾字符串,因此用ESC删除该页面中JS注释后,该页面将存在语法错误,无法编译。因此用ESC操作JSP页面删除JS注释存在隐患。

 

2.3 YUI Compressor

YUI Compressor是雅虎开发的JavaScript 、CSS的开源压缩工具。该工具的开发语言是Java,需要运行JRE1.4以上。YUI Compressor利用了Mozilla基金会提供的JavaScript引擎Rhino。Rhino使得Dojo压缩器具有了确定变量名上下文和作用域的能力,所以Dojo压缩器能够确定变量名的作用域并安全地缩短变量名,而不会造成问题。YUI Compressor实现了去除注释,合并行、页面混淆等功能。该工具仅能操作纯JS、CSS页面,不能操作混合了HTML、JSP、JS等代码的JSP文件。该程序需在DOS下运行,仅能对单一文件操作,执行指令为:

java -jar yuicompressor-x.y.z.jar [options] [input file]

其中参数可以选择不混淆。若需要操作目录中文件,需另行编制脚本。测试结果没有发现问题。

2.4 Dojo shrinksafe

Dojo shrinksafe是目前普遍使用的JavaScript压缩器和混淆器。Dojo 压缩器原理类似于YUI Compressor,同样使用了Mozilla基金会提供的JavaScript引擎Rhino。Dojo shrinksafe仅能操作JS文件,需在DOS下运行,仅能对单一文件操作,执行指令为:

java -jar shrinksafe.jar somescript.js > minifiedscript.js

值得注意的是,该程序没有执行选项。若需要操作目录中文件,需另行编制脚本。测试结果没有发现问题。

第 3 章 总结

3.1 总结

相关工具的适用范围、风险,操作性如下:

名称

范围

风险

操作性

AHC

该工具仅适合静态HTML页面

未发现

界面操作。可选择仅删除注释

ESC

JS文件

删除JSP文件中的JS注释存在隐患

DOS执行。可选择仅删除注释

YUI Compressor

JS、CSS

未发现

DOS执行。操作时可以选择不混淆、不优化,保留分号

Dojo shrinksafe

JS

未发现

DOS执行。该工具无操作选项,需要进行混淆、优化等操作

3.2 建议

对于JSP文件中包含的JS、HTML注释,目前上述工具均不能较好的实现删除。若采用正则表达式来除注释,正则表达式较容易失效,也可能造成隐患。举例如下:

1 如下面代码,去除不当,可能造成%>被当作注释的一部分删除。

<%

} //end if

} //end for%>

2 如下面代码,去除不当,可能造成//*******”;被一并删除。

a = ”*********//*******”;

此外,还有可能存在JSP页面中有意加上注释的情况,若被删除,可能造成影响,如下所示,页面注释中有意添加了时间信息,也可以有意带上其它信息。

<!-- This page was loaded on <%= (new java.util.Date()).toLocaleString() %> -->

而对于独立的JS、CSS文件,可采用YUI Compressor去除文件中注释。程序执行采用不混淆(--nomunge),不优化(--disable-optimizations),保留分号的方式(--preserve-semi),以去除页面注释。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值