【发布时间】:2010-10-20 08:31:46
【问题描述】:
那么,如果您正在使用 Java 和 JSP 编写一个网站,并且不希望用户知道您是用什么语言编写的。您会使用什么技术?
【问题讨论】:
-
我的第一个问题是,为什么? :) 为了安全起见进行混淆通常是一种虚假的安全感,但大多数情况下我只是好奇。
标签: java jsp spring-mvc struts
那么,如果您正在使用 Java 和 JSP 编写一个网站,并且不希望用户知道您是用什么语言编写的。您会使用什么技术?
【问题讨论】:
标签: java jsp spring-mvc struts
在 Apache 配置文件中,以下行使其将 .php 识别为 PHP 脚本并按如下方式执行:
AddHandler php5-script .php
将其更改为 .asp,Apache 会将 .asp 文件识别为 PHP 脚本。例如,将其更改为 .blarg,Apache 会将 .blarg 文件识别为 PHP 脚本。
【讨论】:
您还需要检查您的应用发回的 HTTP 响应标头。通常,在响应标头中找到支持应用程序的技术是微不足道的。
【讨论】:
1) 制作您自己的文件扩展名并配置您的服务器以将其映射到您选择的处理程序。例如重新映射 .whee 以调用 ASP.NET 处理程序或 PHP 处理程序。
2) 确保您使用的任何处理程序都不会像大多数处理程序那样放入标头来指示它是什么。如果是,请将其配置为不,或者在堆栈中将其前面的内容放入堆栈中以在传输之前删除这些标头。
【讨论】:
除了此处的其他答案外,您还需要确保正确处理应用程序错误。如果您发出异常并且 Web 容器处理它,那么您正在使用什么将非常明显。
【讨论】:
如果您使用某种框架,例如 Struts2,您将拥有一个映射到调度程序 servlet 的扩展(*.action,或任何您选择的)。调度程序将请求“转发”到 WEB-INF 目录中的 JSP。用户只能看到被定向到 servlet 的 URL,并返回 HTML。他们不知道模板语言是什么。由于您可以为 servlet 映射选择您喜欢的任何内容,因此您可以编造一些东西,甚至用“.php”或“.asp”之类的东西误导它们。
当然,您可能有一些 JSP 就在 web 应用程序目录中,而不是在 WEB-INF 中。您可以给它们一个不同的扩展名,并告诉容器将它们作为 JSP 处理,方法是创建一个 <jsp-property-group> 和一个 url-pattern 元素,该元素指定 web.xml 中的假扩展名。
您还需要检查容器的文档以确定如何隐藏可能发送的任何服务器版本信息。要探索的另一件事是如何将会话 cookie 名称更改为“jsessionid”以外的名称。这有点小题大做,但它是 Servlet 规范的一部分,有些容器不支持更改它。
【讨论】:
我唯一要做的就是如何将请求传递到没有扩展名(jsp、aspx、asp 等)的页面。这可以通过手动解析请求 url 来完成。此外,重新配置您的服务器以隐藏其详细信息。
【讨论】: