2010-02-28 58 views
4

我有一個DropDownList,我試圖阻止它被用作攻擊媒介。我是否可以假設用戶無法實際更改DDL的值並回發到服務器?目前,我得到的,如果我嘗試和改變數據包提交後拋出此ASP.NET錯誤消息:黑客DropDownList值

For security purposes, this feature verifies that arguments to postback or callback events originate from the server control that originally rendered them.

我是正確的思維,這是由於以誠信在ViewState散列被泄露?這可以繞過嗎?

謝謝

回答

3

實際上,只要頁面具有EnableEventValidation = true(儘管您可以在每個頁面或web.config中禁用它,但這是默認值),您應該可以假定下拉列表選項尚未更改爲客戶端。如果新值被添加到您的下拉列表客戶端,併發生回發,則會發生錯誤,除非您註冊此新值以進行事件驗證(http://odetocode.com/blogs/scott/archive/2006/03/21/asp-net-event-validation-and-invalid-callback-or-postback-argument-again.aspx

+0

看,這就是我的想法。我搞砸了DDL,但只能得到錯誤消息。任何人都可以確認一種方式或其他? 謝謝 – XSL 2010-02-28 14:06:26

+1

通常我會同意你不能相信來自客戶端的內容(這是你設置asp.net驗證器控件來驗證客戶端和服務器端的原因之一),但在這種情況下,你可以確定ddl只要啓用了EventValidation,就不會被混淆。即使你試圖驗證你的ddl和回發事件服務器端,你也可能會做同樣的事情,ASP.Net將EventValidation設置爲true。 – 2010-02-28 15:07:41

3

不,你不能這樣認爲。

你應該總是認爲所有的輸入都是不可信的,並且適當地對待它(確保它是應該的,並且它是正確的類型,並且當前用戶(或其他)有權訪問它, 等等)。

+0

請提供證明,IE是證明成功攻擊的概念驗證 – 2015-04-02 17:38:17