【问题标题】:asp.net mvc hidden field id issueasp.net mvc 隐藏字段 id 问题
【发布时间】:2016-01-29 11:29:01
【问题描述】:

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

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

A1(id=1),A2(id=2).

如果我们为 A1 进行编辑,在 Edit.cshtml 中,A1 的 Id = 1 只是保存在隐藏字段中。我们可以使用浏览器开发工具修改 A1 的 ID 为 2,所以修改后的值将在回发到服务器时为 A2 完成,尽管我们进行了服务器端验证。但是用户 A 有足够的权限修改他所有的产品 A1 A2。那么在这种情况下,如何防止用户被黑客入侵呢?我认为还要在 url 中显示产品 id;那么用户在更新时不能修改它。

我是 MVC 的新手——也许你有一些想法或者解决这个问题的一般方法是什么?

【问题讨论】:

  • 如果您真的担心使用黑客自己的产品(不知道为什么)然后this article 讨论一种技术
  • 只要确保您有良好的授权。也许在编辑之前,检查他们是否被允许在继续之前进行编辑,这也是为什么我更喜欢使用 GUID(用户不容易预测)而不是整数。

标签: javascript asp.net asp.net-mvc hidden-field


【解决方案1】:

这不是一个问题,仍然是一个有效的问题,我是如何解决这个问题的,很简单,而不是使用普通 ID,我将加密 id,模型看起来像:

public class ProductSafe
{
  public string Id {get; set;}\\encrypted
  public string Something {get; set;}
}

使用任何你喜欢的加密方式,当你得到对象 id 时被加密,当你保存模型时,它会老化得到真实的 id。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-29
    • 1970-01-01
    相关资源
    最近更新 更多