【问题标题】:how to pass sensitive data from view to controller如何将敏感数据从视图传递到控制器
【发布时间】:2012-05-16 20:22:30
【问题描述】:

为了构建一个包含大量信息的实体,我需要执行一系列表单提交。每次我从控制器返回视图时,我都需要传递一些关于尚未建立的实体的 id。现在我将这些信息注入隐藏字段,然后在回发到服务器时继续构建实体。 这种情况持续了几次。 我对这种传递敏感信息的方式非常不满意,想知道是否还有其他更合适的方式。我使用授权和身份验证,但仍然担心在某些情况下,一个用户可能会在将这些 ID 发送回服务器之前破解这些 ID,然后修改错误的实体。

此外,来回传递相同的数据似乎是一项艰苦的工作。我取消了使用会话的资格,因为它揭示了另一种数据中断威胁。 (如果一次使用多个浏览器)。

我应该如何执行上述操作?

【问题讨论】:

  • 查看@Jason 关于签名(也就是创建哈希)的回答。隐藏字段不会保护您,“只读”输入字段也不会。加密/解密也不是很合适——客户端(浏览器)总是以明文形式发送原始数据。如果您正在考虑客户端的加密库 - 当然,但同样,那是客户端(无论如何都可以看到/检查)。创建一个哈希服务器端并比较哈希服务器端。
  • 谢谢!不幸的是,我不能投票给你的评论......

标签: asp.net asp.net-mvc sensitive-data


【解决方案1】:

您可以使用另一个隐藏字段中数据的安全散列来检测对值的篡改。

这是一个如何生成加密安全哈希http://www.bytemycode.com/snippets/snippet/379/的示例

【讨论】:

    【解决方案2】:

    【讨论】:

    • 我看不到如何通过在发帖前更改表单字段来防止用户恶意修改数据库实体。
    • 将这些字段设为只读,您可以对关键数据进行加密/解密,并将解密后的数据与相应的数据库实体进行比较,以防止用户对其进行更新。
    【解决方案3】:

    使用带有令牌的跨站点请求伪造来识别每次您发送的信息都包含在服务器端生成并从您的 html 返回的相同令牌

    【讨论】:

    • 这似乎是另一个问题的答案。它打算避免“跨站点请求”。我说的对吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 2013-05-20
    相关资源
    最近更新 更多