2017-06-07 42 views
6

根據Veracode的說法,我們正在應用幾百次與技術特定輸入驗證問題有關的CWE-ID 100「缺陷」。CWC-ID 100 Fix for MVC5

根據他們的文檔,修復是在使用它之前檢查模型上的ModelState.IsValid屬性。我們在每一個管制員的行動上都做到這一點,但我們仍然沒有得到任一個示例控制器操作如下。

public async Task<ActionResult> DeliverySummary (ReportsViewModel Model) 
{ 
    if (ModelState.IsValid) 
    { 
     /* Other processing occurs here */ 

     //finally return View 
     return View(Model); 
    } 
    else 
    { 
     return View(); 
    } 
} 

我們的模型屬性爲System.ComponentModel.DataAnnotations

有沒有人遇到過這個?

+0

發佈您的模型屬性和哪些屬性dinged CWE問題。我在SO上搜索了類似的問題,並在這裏找到單個條目:https://stackoverflow.com/questions/44289347/veracode-throws-technology-specific-input-validation-problems-cwe-id-100-for。 –

+1

我們的視圖模型是巨大的..你想看到整個事情?他們沒有說出掃描結果包含哪些屬性。這就是整個問題。我不知道他們在爲我們做些什麼:/ – mituw16

回答

2

我一直在處理這個問題。基本的罪魁禍首是你沒有[綁定]設置你的參數,指定允許的屬性。

我的舊登錄控制器動作是這樣

public ActionResult SignIn(SignInViewModel viewModel)

並糾正它,我需要它這樣

public ActionResult SignIn([Bind(Include = "Email,Password,UtcOffset")]SignInViewModel viewModel)

閱讀它說的對MVC是隻有屬性Email,PasswordUtcOffset將從SignInViewModel中讀取,因此如果黑客也設置了LastLogonTime會被忽略。另外,由於Veracode的安全檢查,我認爲這種模型綁定現在非常尷尬,因爲開發人員現在必須保持字符串與目標上的道具名稱保持同步。真是麻煩。

+1

我遇到了'綁定'可能的解決方案,並且實現了一些控制器的動作來測試,但是這些「缺陷」是仍然存在於掃描結果中。在他們的一位安全技術人員在諮詢電話中發現我們的代碼沒有問題後,我們用veracode打開了一張技術支持憑單。他對我們爲什麼被毆打感到困惑。我會回覆我聽到的信息,一旦他們發現了這個問題 – mituw16

+0

我也完全同意,必須爲每個控制器動作添加「綁定」令人難以置信的笨拙。幾乎所有我在這個缺陷中所做的研究似乎都圍繞着Entity框架以及從您的模型中直接傳遞到控制器的數據庫更改。我們完全不使用EF,並且使用存儲過程在存儲庫模式之後完全抽象了我們的DAL。我希望Veracode的平臺足夠聰明,可以實現何時使用EF,並相應地報告EF「缺陷」 – mituw16

+0

@ mituw16您是否從veracode收到有關您的查詢的回覆?我們在應用中也面臨同樣的問題。 – hgarg