2009-04-19 17 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腳本。