asp.net mvc 隐藏字段 id 问题
asp.net mvc hidden field id issue
我总是遇到问题,想不出办法解决。
比如asp.netmvc的场景,用户"A"有他的产品:
A1(id=1),A2(id=2).
如果我们为 A1 编辑,在 Edit.cshtml 中,A1 的 Id = 1 只是保存在隐藏字段中。我们可以使用浏览器开发工具将 A1 的 Id 修改为 2,因此当 post 返回服务器时,修改后的值将为 A2 完成,尽管我们进行了服务器端验证。但是用户A有足够的权限修改他所有的产品A1 A2。那么在这种情况下,如何防止用户被黑呢?我还想在 url 中显示产品 ID;那么用户在更新时不能修改它。
我是 MVC 的新手 — 也许您有一些想法或者解决这个问题的一般方法是什么?
这不是一个问题,仍然是一个有效的问题,我是如何解决这个问题的,很简单,而不是使用普通 Id 我将加密 id,模型将如下所示:
public class ProductSafe
{
public string Id {get; set;}\encrypted
public string Something {get; set;}
}
使用任何你喜欢加密的东西,当你得到对象 id 时加密,当你保存模型时将它分解以获得真实 id。
我总是遇到问题,想不出办法解决。
比如asp.netmvc的场景,用户"A"有他的产品:
A1(id=1),A2(id=2).
如果我们为 A1 编辑,在 Edit.cshtml 中,A1 的 Id = 1 只是保存在隐藏字段中。我们可以使用浏览器开发工具将 A1 的 Id 修改为 2,因此当 post 返回服务器时,修改后的值将为 A2 完成,尽管我们进行了服务器端验证。但是用户A有足够的权限修改他所有的产品A1 A2。那么在这种情况下,如何防止用户被黑呢?我还想在 url 中显示产品 ID;那么用户在更新时不能修改它。
我是 MVC 的新手 — 也许您有一些想法或者解决这个问题的一般方法是什么?
这不是一个问题,仍然是一个有效的问题,我是如何解决这个问题的,很简单,而不是使用普通 Id 我将加密 id,模型将如下所示:
public class ProductSafe
{
public string Id {get; set;}\encrypted
public string Something {get; set;}
}
使用任何你喜欢加密的东西,当你得到对象 id 时加密,当你保存模型时将它分解以获得真实 id。