2010-06-03 60 views
1

我已經在ASP.NET 3.5和C#中開發了一個Web應用程序。當我部署應用程序時,人們可以看到我正在使用ASP.NET的警告標誌。我該如何做到這一點,以便任何看到我的網站的人都看不到我在使用ASP.NET?隱藏我的網站建立在ASP.NET中的事實

+6

出於興趣,你爲什麼要這麼做? – 2010-06-03 13:27:16

+2

出於好奇 - 爲什麼要隱藏技術棧? – 2010-06-03 13:27:27

+0

我能想到的唯一理由就是通過默默無聞的理由來實現安全。即使所有標識已成功從響應頭文件,文件擴展名和頁面中刪除,也可能通過測試其對各種請求的響應(例如,asp.net請求限制大小)來確定它是否爲asp.net。 – 2010-06-03 13:33:13

回答

5

由於ASP.NET的本質,任何動態構建的控件都將顯示爲$Ctrl。如果您使用ViewState,則會顯示。如果您使用ASP.NET事件驗證,則會顯示。如果你不想讓它出現,你所能做的就是使用另一個框架(ASP.NET MVC),或者不使用ASP.NET的任何這些功能(如果你願意的話,這會很愚蠢)使用ASP.NET)。

如果您的網頁後綴爲.aspx,那麼每個人都會知道您正在使用ASP.NET。你在使用URL重寫嗎?

+0

似乎禁用視圖狀態將適用於我,在這種情況下,我錯過了3.5中的asp.net 4.0,我相信我必須禁用整個頁面的viewstate而不是特定的控件。 我正確嗎? – Zerotoinfinity 2010-06-03 13:05:47

+0

是的;您必須禁用頁面的視圖狀態。 http://www.ironspeed.com/articles/Disable%20View%20State%20for%20a%20Page/Article.aspx – 2010-06-03 13:12:02

1

我會建議:

  • 使用URL重寫來改變或不使用視圖狀態刪除的頁面擴展
+0

您可能還建議從返回的HTTP頭中刪除IIS或.NET的任何指示。 – 2010-06-03 13:25:23

1

定義指示符號?不看源代碼,唯一明顯的方法就是.ASPX擴展。

查看源,你需要刪除

<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" /> 
<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" /> 
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" ... 

    <script type="text/javascript"> 
//<![CDATA[ 
var theForm = document.forms['aspnetForm']; 
if (!theForm) { 
    theForm = document.aspnetForm; 
} 
function __doPostBack(eventTarget, eventArgument) { 
    if (!theForm.onsubmit || (theForm.onsubmit() != false)) { 
     theForm.__EVENTTARGET.value = eventTarget; 
     theForm.__EVENTARGUMENT.value = eventArgument; 
     theForm.submit(); 
    } 
} 
//]]> 
</script> 
  • 到WebResource.axd的或的ScriptResource.axd
  • ASP.NET控件名稱(ctl00等)的任何引用
  • 響應頭X-Powered-ByX-AspNet-Version

任何人都可以想到別人嗎?

0

你唯一真正的選擇是切換到ASP.NET MVC;否則,會告訴某個地方任何真正瞭解ASP.NET的人,或者您將限制您使用的功能,以至於在使用ASP.NET時沒有任何好處。即使沒有ViewState,如果控件嵌入在面板中,或者使用母版頁,控件ID也是可以使用的。任何由控件或頁面發出的特定於MS的JavaScript都將被放棄。每頁一致地使用單個表單幾乎是一種放棄。許多事情都表明ASP.NET。

爲什麼這很重要?

1

您可能還想要刪除嵌入的資源。頁面源代碼中的.axd擴展是一個贈送。

編輯: 來到想起來,隱藏字段(前__EVENTVALIDATION)是贈送品太...