2012-09-28 92 views
1

我讀過幾個ASP.NET比ASP Classic更安全的地方。但從來沒有看到任何實際的理由。爲什麼ASP.NET比ASP Classic更安全?

以標準登錄系統爲例。 用戶通過表單向服務器發送用戶名和密碼。這兩種語言都以相同的方式完成。而在這兩種語言中,剩下的都是在服務器上完成的。 爲什麼選擇ASP over ASP Classic?

+1

你在哪裏讀到這個?對於開發人員來說,在.NET中至少有同樣多的方式給惡意攻擊者訪問,就像Classic中那樣。 – AnthonyWJones

+0

我很想給出一個鏈接到我讀的地方,但我真的不記得,現在似乎也找不到它。自從我在9-12個月前閱讀它以來,它一直在嘮叨我,這就是爲什麼我問。 :)如果它不是真的(正如你所說的那樣),那麼對這個問題的回答將會是「這不是......」 – Behrens

回答

4

正如ScottRFrost所述,Request Validation可防止XSS作爲默認設置。就我個人而言,我寧願將其關閉並開發一個應用程序以使用輸出sanitisation insead(例如HTML編碼輸出到網頁,或正確編碼和轉義JavaScript中使用的輸出)。此方法不限制用戶輸入,因此它不會像Request Validation那樣限制應用程序功能。例如它將允許將HTML輸入到將顯示在網頁上而不是由瀏覽器解釋的字段中(想象一個HTML開發人員論壇不允許發佈HTML)。如果你在ASP.NET中使用這個方法,你可以使用一種非常類似的方法來標準的ASP開發,以便輸出到頁面的變量。

爲了迴應您的觀點,在驗證(驗證用戶名/密碼組合)過程中,經典ASP和ASP.NET之間沒有太大區別。 ASP.NET提供了一些可以放入頁面的用戶控件,並且還提供了Membership Provider模型,但實質上你必須爲此實現邏輯。

ASP.NET也具有作爲標準包含的授權組件,因此可以限制對整個應用程序或web.config文件中設置的某些URL路徑的訪問。這防止開發人員忘記在每頁基礎上包含授權檢查。任何更細粒度的訪問檢查仍然需要在ASP.NET中手動處理。

ASP.NET還提供無法通過Web服務器讀取的專用文件夾,例如/ App_Data。這爲存儲不應通過HTTP直接讀取的應用程序相關文件提供了便利。您可以在傳統ASP中手動執行此操作,但您需要將此目錄存儲在Web根目錄之外,或者需要設置本地文件夾權限,以便IIS用戶無法讀取這些文件。總之,除了新手開發人員不太可能在ASP.NET中創建XSS易受攻擊的網站之外,我不會說ASP.NET本身比傳統ASP更安全。

+0

完美答案。謝謝。 :) – Behrens

1

ASP.NET默認包含一些功能,如Request Validation,這些功能限制了一些常見的腳本攻擊。你可以在傳統的ASP中自己做,但在.NET中它是默認的。

-1

可能存在安全問題。但我擔心一件事。它關於SQL注入。 Asp.net提供了參數化查詢和HTML編碼解碼技術的功能。欲瞭解更多信息,請單擊鏈接ASP.net security

+0

這不是一個答案。 ASP Classic中使用的ADODB還爲開發人員提供了使用參數化查詢的方法。同樣,.NET中也沒有任何東西可以阻止開發人員編寫注入緩衝代碼。 – AnthonyWJones

+0

As @AnthonyWJones說你可以使用參數化查詢來停止注入攻擊。您也可以 - 如果查詢ID - 使用RegEdit表達式過濾掉所有非數字字符。如果查詢字符串,您可以創建一個函數,用正確的ASCII字符替換易受攻擊的字符。 – Behrens