`
踏雪寻梅
  • 浏览: 80776 次
  • 来自: ...
社区版块
存档分类
最新评论

隐藏Jsp源代码

    博客分类:
  • Java
阅读更多
虽然我们热衷开源(Open Source),但是有时候我们还是有必要将自己的代码加密混淆,防止对手据为己有。关于Java代码的混淆,网上说的很多,而对于Jsp提到的却甚少,也许大家都将业务逻辑封装到Java Bean中的原因吧,呵呵。下面以Weblogic(Windows平台)为例,谈谈如何隐藏Jsp代码。

[Weblogic]
一、用weblogic.jspc编译JSP文件
a. 创建一个文件jspc.cmd
   set JAVA_HOME=
   @要包括jsp代码依赖的jar
   set CLASSPATH=
   @rem 这是JSP编译后的servlet文件的存放目录
   set TARGET_DIR=
   @rem 这是你要发布的Web Application的目录
   set WEBAPP_DIR=
   java -classpath %CLASSPATH%  weblogic.jspc -k -g -compileAll -d %TARGET_DIR% -webapp %WEBAPP_DIR%
b. 根据项目的情况,设置“=”右边的值
c. 执行jspc.cmd文件,进行JSP文件的编译,编译后的class文件,应该在%TARGET_DIR%/jsp_servlet目录下,可以将它放在项目的classes目录下,也可以打包成jar
      
二、编译成功后,将项目中的Jsp移走
三、编辑weblogic.xml文件,把jsp-descriptor标签内的内容清空,加入如下的内容:
<jsp-descriptor>
<jsp-param>
<param-name>precompile</param-name>
<param-value>false</param-value>
</jsp-param>
<jsp-param>
<param-name>pageCheckSeconds</param-name>
<param-value>-1</param-value>
</jsp-param>
</jsp-descriptor>
四、编辑web.xml文件,在其中添加如下内容:
<servlet>
<servlet-name>JSPClassServlet</servlet-name>
<servlet-class>weblogic.servlet.JSPClassServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>JSPClassServlet</servlet-name>
<url-pattern>*.jsp</url-pattern>
</servlet-mapping>
五、重新发布项目,可以看到在没有Jsp代码的情况下,应用能成功被访问

备注:上述方式,采用的其实就是jsp的预编译,如果在预编译的时候生成java文件,然后将java文件混淆编译、打包,隐藏就更进一步了,呵呵


[Tomcat5.5]

<?xml version="1.0" encoding="utf-8"?>
<project name="WebApp Precompilation JSP to Java to Class to Jar" basedir="." default="help">
    <property name="tomcat.home" value="D:/tomcat5.5.15"/>
    <property name="webapp.name" value="myapp"/>
    <property name="webapp.path" value="D:/web"/>
    
    <target name="all" depends="jsp2java,java2class,class2jar,clear"/>
    <target name="help">
        <echo message="显示功能列表"/>
        <echo message="jsp2java  通过JspC将JSP转换成Java源代码"/>
        <echo message="java2class 将转换后的Java源代码进行编译成class文件"/>
        <echo message="class2jar 将编译后的class文件打包"/>
        <echo message="clear  清理现场"/>
    </target>
    <target name="jsp2java">
        <taskdef classname="org.apache.jasper.JspC" name="jsp2java">
            <classpath id="jsp2java.classpath">
                <fileset dir="${tomcat.home}/bin">
                    <include name="*.jar"/>
                </fileset>
                <fileset dir="${tomcat.home}/server/lib">
                    <include name="*.jar"/>
                </fileset>
                <fileset dir="${tomcat.home}/common/lib">
                    <include name="*.jar"/>
                </fileset>
            </classpath>
        </taskdef>
        <!-- 注意JSP文件要设置为UTF-8编码 -->
        <jsp2java classpath="jsp2java.classpath" javaEncoding="UTF-8" validateXml="false" uriroot="${webapp.path}"
                  webXmlFragment="${webapp.path}/WEB-INF/webJSP.xml" outputDir="${webapp.path}/WEB-INF/JspC/src"/>
    </target>
    <target name="java2class">
        <mkdir dir="${webapp.path}/WEB-INF/JspC/classes"/>
        <!-- 同样Java文件要设置为UTF-8编码 -->
        <javac srcdir="${webapp.path}/WEB-INF/JspC/src" destdir="${webapp.path}/WEB-INF/JspC/classes" encoding="UTF-8"
               optimize="off" debug="on" failonerror="false" excludes="**/*.smap">
            <classpath id="java2class.classpath">
                <pathelement location="${webapp.path}/WEB-INF/classes"/>
                <fileset dir="${webapp.path}/WEB-INF/lib">
                    <include name="*.jar"/>
                </fileset>
                <pathelement location="${tomcat.home}/common/classes"/>
                <fileset dir="${tomcat.home}/common/lib">
                    <include name="*.jar"/>
                </fileset>
                <pathelement location="${tomcat.home}/shared/classes"/>
                <fileset dir="${tomcat.home}/shared/lib">
                    <include name="*.jar"/>
                </fileset>
                <fileset dir="${tomcat.home}/bin">
                    <include name="*.jar"/>
                </fileset>
            </classpath>
            <include name="**"/>
            <exclude name="tags/**"/>
        </javac>
    </target>
    <target name="class2jar">
        <mkdir dir="${webapp.path}/WEB-INF/lib"/>
        <jar basedir="${webapp.path}/WEB-INF/JspC/classes" jarfile="${webapp.path}/WEB-INF/lib/${webapp.name}JSP.jar"/>
    </target>
    <target name="clear">
        <delete dir="${webapp.path}/WEB-INF/JspC/classes"/>
        <delete dir="${webapp.path}/WEB-INF/JspC/src"/>
        <delete dir="${webapp.path}/WEB-INF/JspC"/>
    </target>
</project>


修改相关配置后,运行ant all,生成好的jar文件是{$webappname}JSP.jar。在做为产品发布的时候,只需要你的类jar包和JSP预编译的包放到WEB-INF\lib\目录下即可,如${webappname}.jar和JSP预编译的包${webappname}JSP.jar;然后删除掉你的JSP源文件;并且将${webapp.path}/WEB-INF/webJSP.xml里的servlet映射,添加到${webapp.path}/WEB-INF/web.xml里面。
分享到:
评论

相关推荐

    jsp暴源代码工具.

    这可能意味着该工具能够绕过服务器的保护机制,展示通常应被隐藏的JSP页面源代码。了解这类工具的工作原理和防护措施对于网站管理员和开发者来说至关重要,以防止敏感信息被不法分子利用。 【标签解析】 标签"jsp暴...

    JSP 网上书店源代码

    **JSP网上书店源代码详解** 本项目是一个基于JSP技术构建的网上书店系统,它展示了如何使用JavaServer Pages(JSP)技术来实现动态网页交互,并通过连接池管理数据库连接,提高系统的性能和资源利用率。以下是这个...

    JSP注释,在浏览器查看源代码时,看不到此界面

    标题“JSP注释,在浏览器查看源代码时,看不到此界面”主要涉及到的是Java Server Pages (JSP) 技术中的注释使用及其在客户端显示的问题。JSP是一种动态网页开发技术,允许开发者将HTML、CSS、JavaScript与Java代码...

    Tomcat 源代码调试 - 看不见的 Shell 第二式之隐藏任意 Jsp 文件1

    在深入探讨Tomcat源代码调试和“看不见的Shell第二式之隐藏任意Jsp文件”的概念之前,我们需要了解一些基础的JSP和Tomcat工作原理。 JSP(JavaServer Pages)是一种动态网页技术,允许开发者在HTML中嵌入Java代码,...

    网页源代码及破解的方法详解

    例如,通过隐藏地址栏或者将真实的网页设置为默认页,使用户无法通过简单的查看源代码方法获取网页内容。 5. 注意事项:文章中还提到了一些需要特别注意的地方。例如,即使通过JavaScript阻止了右键菜单和快捷键...

    《JSP基础教程》源代码

    JSP的主要目的是将表现层逻辑和业务逻辑分离,使得开发者可以专注于页面的展示,而将复杂的Java代码隐藏在服务器端执行。在例子1example1_1.jsp中,我们看到了一个简单的JSP页面,它通过在HTML中嵌入Java代码来计算1...

    jsp网页软键盘源代码

    【jsp网页软键盘源代码】是一种为网页输入设计的安全组件,尤其适用于在线支付、密码输入等对用户隐私保护要求较高的场景。它通过JavaScript和CSS技术实现,以防止键盘记录器等恶意软件窃取用户输入的信息。这个源...

    jsp网上书店源代码

    对于购物车功能,源代码可能包含了一个基于cookie的简单实现,或者使用了隐藏表单字段来保存用户的临时选择。同时,它还可能涉及到商品分类、搜索、排序等功能,这些都需要在后端处理复杂的业务逻辑。 在用户界面...

    jdbc 源代码 jsp+mysql

    【标题】"jdbc 源代码 jsp+mysql" 是一个基于Java的Web应用程序示例,它使用JDBC(Java Database Connectivity)与MySQL数据库进行交互。这个项目可能是一个教学示例,用于教授如何在实际应用中结合JSP、Servlet和...

    jsp打印功能有列子源代码.rar

    在提供的"jsp打印功能.rar"压缩包中,包含了示例源代码,你可以下载并参考这些代码来实践和理解JSP的打印功能。通过学习和调试,你将能够熟练掌握如何在实际项目中实现这一功能,提升你的Web开发技能。

    网上书城html源代码

    在"网上书城"的源代码中,CSS文件用于定义文字样式、颜色、背景、边距、定位等视觉效果。学习CSS,你需要理解选择器的概念,如类选择器、ID选择器、元素选择器等,以及盒模型、相对定位、绝对定位等布局原理。CSS3...

    实用的flash+xml相册程序源代码 v1.0

    总的来说,这个源代码包提供了一个使用Flash和XML的动态相册解决方案,利用JSP处理后端逻辑,通过XML数据驱动Flash前端的展示。开发者可以通过学习和修改这个源代码,提升自己的Web开发技能,同时定制化自己的相册...

    ajax+jsp+Hibernate实现的Blog源代码

    【标题】"Ajax + JSP + Hibernate 实现的 Blog 源代码" 是一个基于Web技术构建的博客系统,展示了如何将这三种技术融合到一起,以创建一个动态、高效且数据库驱动的在线博客平台。这个项目的核心在于利用Ajax进行...

    7个JSP小项目源代码和笔记资料汇总javalearnsa资料分享

    【标题】"7个JSP小项目源代码和笔记资料汇总javalearnsa资料分享" 涵盖了多个基于JavaServer Pages (JSP) 的小型项目,这些项目旨在帮助学习者深入理解JSP技术及其在实际开发中的应用。通过这些源代码,你可以了解...

    JSP网络故障管理平台(源代码+外文翻译+论文).zip

    这个平台包含了源代码、外文翻译和相关的学术论文,为学习者提供了全面的理解和实践机会。以下是关于该平台及其中涉及到的关键知识点的详细解析: 1. **Java JSP(Java Server Pages)**: Java JSP是一种服务器端...

    JSP项目开发全程实录(完整源代码).rar

    JSP是由Sun Microsystems公司推出的动态网页技术,它的核心思想是将表现层(视图)与业务逻辑层(控制器)分离,使得开发者能够专注于页面的展示,而将复杂的Java代码隐藏在后台运行。JSP文件本质上是HTML文件,其中...

    纯JSP分页代码

    在网页开发中,分页是一种常见的功能,用于处理大量数据的展示,避免一次性加载过多内容导致页面...在pagination目录下的文件很可能是这个分页功能的源代码,你可以通过阅读和分析这些文件,进一步理解和实践上述概念。

    JSP+SQL房屋租赁管理信息系统JDBC(源代码+报告+答辩PPT).zip

    【标题】"JSP+SQL房屋租赁管理信息系统JDBC(源代码+报告+答辩PPT)"是一个基于Java和JSP技术开发的项目,主要应用于房屋租赁业务的信息化管理。此项目利用了Java语言的强大功能,结合JSP的动态网页技术,通过JDBC...

    Java基础入门源代码

    这个"Java基础入门源代码"集合应该是为了帮助初学者理解和实践Java编程基础而设计的。让我们详细探讨一下Java语言的基础知识,以及如何通过源代码学习。 1. **基本语法**:Java的语法与C++和C#类似,它包括类、对象...

    分页显示源程序、源代码

    在IT行业中,分页显示是一种常见的数据展示技术,特别是在处理大量数据时,如数据库查询结果、源代码浏览等场景。本资源提供的是一个与Java相关的分页显示源代码,旨在帮助学习者理解和实现分页功能。Java作为一种多...

Global site tag (gtag.js) - Google Analytics