2009-04-19 18 views

回答

5

如果您正在使用某种框架,比如Struts2,那么您将拥有一个映射到调度程序servlet的扩展名(* .action或任何您选择的)。调度程序将请求“转发”到WEB-INF目录中的JSP。用户只能看到定向到servlet的URL,并取回HTML。他们无法分辨模板语言是什么。既然你可以选择任何你喜欢的servlet映射,你可以制作一些东西,甚至可以用诸如“.php”或“.asp”之类的东西来误导它们。

当然,您可能在Web应用程序目录中有一些JSP,而不是在WEB-INF中。您可以给这些不同的扩展名,并告诉容器将它们作为JSP进行处理,方法是创建一个带有url-pattern元素的<jsp-property-group>,该元素指定web.xml中的假扩展名。

您还需要检查容器的文档以确定如何隐藏可能发送的任何服务器版本信息。另一个要探讨的是如何将会话cookie名称更改为“jsessionid”以外的内容。这有点让人失望,但它是Servlet规范的一部分,有些容器不支持更改它。

+2

+1。使用Spring MVC,通常控制器映射为“.htm” - 因此没有实现特定的扩展 – 2009-04-19 01:08:01

2

我会做的唯一的事情是如何将请求传递给没有扩展名的页面(jsp,aspx,asp等)。这可以通过手动解析请求url来完成。此外,重新配置您的服务器以隐藏它的详细信息。

+0

你可以用mod_rewrite来帮忙吗? – 2009-04-19 01:05:02

4

随着其他答案在这里,你会想确保你正确地处理你的应用程序错误。如果你让一个异常出来,Web容器处理它,这将是非常明显的你正在使用。

1

1)制作你自己的文件扩展名并配置你的服务器,将它映射到你选择的处理程序。例如重新映射。调用ASP.NET处理程序或PHP处理程序。

2)确保您使用的任何处理程序都不会将标题放入以表明它是什么,就像大多数人一样。如果是这样,请将其配置为不要,或者将其前面的内容放在堆栈中以在传输之前删除这些标头。

1

您还需要检查应用程序发回的HTTP响应标头。通常,在响应头文件中找到为应用程序提供动力的技术是微不足道的。

0

在Apache的配置文件,下面的线使其认识到.PHP的PHP脚本并执行它是这样:

AddHandler php5-script .php 

其更改为.asp和Apache会认识到.asp文件作为PHP脚本。将它改为.blarg,并且Apache会将.blarg文件识别为PHP脚本。