我需要安全地存储和检索GET操作,获取服务的视图和视图中表单的POST操作之间的特定值。
此值是用户将为其编辑标题的文章的ID。如果我只是使用View中的普通隐藏输入来传递数据,我知道用户可以更改隐藏值,这可能会导致安全问题。
我读过的很多帖子只是说:“那么只需验证作者是否有权编辑您在POST操作中获得的ID文章。”
但是如果这个用户有权编辑两篇文章并且他将ID更改为他有权编辑的另一篇文章怎么办?我真的不想那样。
到目前为止,我找到了两种方法来解决这个问题:
[HttpGet]
public ActionResult Edit(int? id)
{
TempData["id"] = id;
return View();
}
[HttpPost]
public ActionResult Edit(int id)
{
var id_from_get_action = TempData["id"];
return View();
}
我找到post我为隐藏字段生成令牌,然后在POST操作上验证。
<input id="SomeProperty" name="SomeProperty" type="hidden" value="I love lamp">
<input name="__SomePropertyToken" type="hidden" value="zqb7MIL2Y5F3jL96ncdSZOmetL8g8RAWZP8Y/w/jUAKJ89GcUViRWOZ/XtQhtICMFZb4sQtZLOpqK/WyC0TFP0B6r+3nObFGDjb0U459yzQbadC4+DLIsTmhyYeT+ZT+bnW1AEP2fgVyXXSduYIf5vns7g9nhRWTgJo8xF6NQyT6kNgyl5puq+BYc8dfhMXn">
所以,回到我的问题。我的问题有标准解决方案吗?或者我列出了两种常用方法?