2017-10-13 49 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

当表单被提交时,我可以信任它的任何属性并假定它们没有被修改吗?

没有。您不能以任何形式或形式信任客户端,您从客户端发送的所有内容都需要在服务器上重新验证。

在这种情况下,这意味着检查发送请求的人是否具有修改所提供用户的密码的必要权限,无论这是否是您在初始请求中发送的同一用户。或者如果你知道你发出了哪一个,如果用户不匹配,你可以在第二个返回一个错误的请求响应。这真的取决于你的网络服务器是多么无状态(或没有)。