因此,如果您使用Java和JSP编写网站,并且不希望用户知道您使用的是哪种语言。您会使用哪种技术?
答案 0 :(得分:5)
如果您正在使用某种类型的框架,例如Struts2,那么您将有一个扩展(* .action,或您选择的任何内容)映射到调度程序servlet。调度程序将请求“转发”到JSP,该JSP位于WEB-INF目录中。用户只能看到定向到servlet的URL,并返回HTML。他们无法分辨模板语言是什么。既然您可以为servlet映射选择任何您喜欢的内容,那么您可以创建一些内容,甚至可以使用“.php”或“.asp”等内容来误导它们。
当然,您可能在Web应用程序目录中有一些JSP,而不是在WEB-INF中。您可以为这些扩展提供不同的扩展,并告诉容器将它们作为JSP处理,方法是创建一个<jsp-property-group>
,其中url-pattern
元素指定web.xml中的伪扩展名。
您还需要检查容器的文档,以确定如何隐藏可能发送的任何服务器版本信息。另一件需要探索的事情是如何将会话cookie名称更改为“jsessionid”以外的其他名称。这有点赠品,但它是Servlet规范的一部分,有些容器不支持更改它。
答案 1 :(得分:4)
除了此处的其他答案之外,您还需要确保正确处理应用程序错误。如果你让一个Exception出来并且web容器处理它,那么你所使用的内容就很明显了。
答案 2 :(得分:2)
我唯一要做的就是如何将请求传递给没有扩展名的页面(jsp,aspx,asp等)。这可以通过手动解析请求URL来完成。此外,重新配置您的服务器以隐藏其详细信息。
答案 3 :(得分:1)
1)组成您自己的文件扩展名并配置您的服务器以将其映射到您选择的处理程序。例如重新映射.whee以调用ASP.NET处理程序或PHP处理程序。
2)确保您使用的任何处理程序都没有放入标题以指示它是什么,就像大多数人一样。如果确实如此,请将其配置为,或者在堆栈前面放置一些内容,以便在传输之前删除这些标头。
答案 4 :(得分:1)
您还需要检查应用发回的HTTP响应标头。通常,在响应标题中找到为应用程序提供支持的技术是微不足道的。
答案 5 :(得分:0)
在Apache配置文件中,以下行使它将.php识别为PHP脚本并按原样执行:
AddHandler php5-script .php
将其更改为.asp,Apache会将.asp文件识别为PHP脚本。将其更改为.blarg,Apache会将.blarg文件识别为PHP脚本。