Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript asp.net mvc隐藏字段id问题_Javascript_Asp.net_Asp.net Mvc_Hidden Field - Fatal编程技术网

Javascript asp.net mvc隐藏字段id问题

Javascript asp.net mvc隐藏字段id问题,javascript,asp.net,asp.net-mvc,hidden-field,Javascript,Asp.net,Asp.net Mvc,Hidden Field,我总是有问题,想不出解决的办法 例如,在asp.net mvc的场景中,用户“A”有他的产品: A1(id=1),A2(id=2). 如果我们为A1编辑,在edit.cshtml中,A1的Id=1只保存在一个hiddenfield中。我们可以使用browser developer工具将A1的Id修改为2,所以修改后的值将在回发到服务器时为A2执行,尽管我们进行了服务器端验证。但用户A有足够的权限修改其所有产品A1 A2。那么在这种情况下,如何防止用户进行黑客攻击呢?我认为在url中也应该显示产

我总是有问题,想不出解决的办法

例如,在asp.net mvc的场景中,用户“A”有他的产品:

A1(id=1),A2(id=2).
如果我们为A1编辑,在edit.cshtml中,A1的Id=1只保存在一个hiddenfield中。我们可以使用browser developer工具将A1的Id修改为2,所以修改后的值将在回发到服务器时为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。

如果您真的担心使用黑客攻击他们自己的产品(不确定原因),请讨论一种技术,必须确保您拥有良好的授权。也许在编辑之前,检查一下是否允许编辑,然后再继续,这也是为什么我更喜欢使用GUID(用户不容易预测)来代替整数。