2017-10-13 29 views
1

說我有這個視圖模型:ASP.NET核心視圖模型能夠被篡改嗎?

public class UserSettingsViewModel 
{ 
    public string UserId { get; set; } 
    public string NewPassword { get; set; } 
} 

我回到這樣的觀點:

return View(new UserSettingsViewModel { UserId = "someone" }); 

然後在視圖中我有一個asp-for="NewPassword"形式更改密碼。

提交表單時,是否必須重新檢查UserId,還是可以絕對確定UserId沒有被篡改? ASP.NET如何知道用戶可以編輯哪些屬性?提交表格時,我能否信任其任何其屬性,並假定它們未被修改?

回答

3

當表單被提交時,我可以信任它的任何屬性並假定它們沒有被修改嗎?

沒有。您不能以任何形式或形式信任客戶端,您從客戶端發送的所有內容都需要在服務器上重新驗證。

在這種情況下,這意味着檢查發送請求的人是否具有修改所提供用戶的密碼的必要權限,無論這是否是您在初始請求中發送的同一用戶。或者如果你知道你發出了哪一個,如果用戶不匹配,你可以在第二個返回一個錯誤的請求響應。這真的取決於你的網絡服務器是多麼無狀態(或沒有)。