【问题标题】:JSON SecurityJSON 安全性
【发布时间】:2010-09-30 19:39:14
【问题描述】:

Pagemethods 和 Json 有安全风险吗?(我不使用 cookie)。例如,我有一个 pagemethod,我将用户 ID 作为参数发送,但我不想将其显示给用户。用户可以从 pagemethod 获取用户 ID 吗?

【问题讨论】:

    标签: asp.net javascript security json


    【解决方案1】:

    是的,他们可以(查看用户 ID)。用户可以看到服务器和客户端之间的任何通信。用 fiddler 或 firebug 看看会发生什么。您可以将其视为任何常规的 get 或 post 请求。

    我不知道为什么不使用它。在不了解任何背景的情况下,我无法就我是否会选择它给出明确的答案,但总的来说,没有理由不使用它,只需应用与 HTTP 获取和发布请求相同的安全性,就像在常规表单提交中一样.

    【讨论】:

      【解决方案2】:

      JSON 本身没有安全性,它是一种未加密的数据格式。

      【讨论】:

        【解决方案3】:

        它与规则 GET 和 POST 具有相同的安全风险,它只是另一种来回发送数据的格式。如果您使用的是常规 POST,那么任何人都可以看到相同的用户 ID。

        因此,如果您不想让人们弄乱用户 ID,您可以添加某种依赖于用户 ID 的加密字符串以进行验证,以列出许多可能的解决方案之一。

        【讨论】:

          【解决方案4】:

          JSON 可以像页面一样利用 FormsAuthentication 安全性。如果我不希望最终用户看到标识符,我通常会在 User.Identity.Name 中存储该值(或我可以用来查找该值的东西)。

          这种方法最复杂的部分是,如果您未通过身份验证,JSON 可能不会返回任何内容。为了解决这个问题,我倾向于包含一个未经身份验证的页面,用于让 JSON 告诉您用户是否已登录。

          【讨论】:

            【解决方案5】:

            我正在隐藏字段中隐藏用户 ID 参数,只是担心在该过程中可以更改它。感谢您的所有支持

            【讨论】:

              【解决方案6】:

              如果用户 ID 在隐藏的表单字段中,那么它会完全暴露给在浏览器中查看源代码的任何人。他们不仅可以看到 userId,还可以看到您如何将其发送到服务器。

              一般来说,您永远不会信任客户端的敏感数据。假设他们总是可以操纵响应。

              安全传递消息的方法是以字符串的形式给用户一些会话令牌。此会话令牌应以相当多的随机性生成,并将其用户名包含在算法中。查看有关 md5 和 salting 的资源。有了你给他们的这个令牌,现在的假设是他们不能对内容进行逆向工程。由于他们没有算法(它位于服务器端),因此他们无法篡改它。当然,您的服务器必须解密会话令牌才能检索 userId。

              这本身并不意味着您的应用程序是完全安全的 - 它只是解决了许多潜在问题之一。

              【讨论】:

                猜你喜欢
                • 2023-04-02
                • 2013-04-03
                • 2015-12-24
                • 2016-07-20
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多