说我有这个视图模型:
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如何知道用户可以编辑哪些属性?提交表单时,我是否可以信任其所有属性并假设它们尚未被修改过?
答案 0 :(得分:3)
提交表单时,我可以信任它的任何属性并假设它们没有被修改过吗?
不。您不能以任何形式或形式信任客户端,您从客户端发送的所有内容都需要在服务器上重新验证。
在这种情况下,这意味着检查发送请求的人是否具有修改其提供的用户的密码所必需的权限,无论该用户是否与您在初始请求中发送的用户相同。或者,如果您知道发出了哪一个,如果用户不匹配,您可以在第二个上返回错误请求响应。这真的取决于你的网络服务器是无国籍的(或者没有)。