3

因此,如果您正在使用 Java 和 JSP 编写一个网站,并且不希望用户知道您用什么语言编写它。您会使用什么技术?

4

6 回答 6

5

如果您使用某种框架,例如 Struts2,您将拥有一个映射到调度程序 servlet 的扩展名(*.action,或任何您选择的内容)。调度程序将请求“转发”到 WEB-INF 目录中的 JSP。用户只能看到被定向到 servlet 的 URL,并返回 HTML。他们不知道模板语言是什么。由于您可以为 servlet 映射选择您喜欢的任何内容,因此您可以编造一些东西,甚至用“.php”或“.asp”之类的东西误导它们。

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

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

于 2009-04-19T00:24:58.230 回答
4

除了此处的其他答案,您还需要确保正确处理应用程序错误。如果你让一个 Exception 出来并且 web 容器处理它,那么你正在使用什么会很明显。

于 2009-04-19T00:53:54.933 回答
2

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

于 2009-04-19T00:13:43.080 回答
1

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

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

于 2009-04-19T01:05:23.470 回答
1

您还需要检查您的应用发回的 HTTP 响应标头。通常,在响应标头中找到支持应用程序的技术是微不足道的。

于 2009-04-19T02:34:33.693 回答
0

在 Apache 配置文件中,以下行使其将 .php 识别为 PHP 脚本并按如下方式执行:

AddHandler php5-script .php

将其更改为 .asp,Apache 会将 .asp 文件识别为 PHP 脚本。例如,将其更改为 .blarg,Apache 会将 .blarg 文件识别为 PHP 脚本。

于 2009-04-19T03:02:16.077 回答