【发布时间】:2010-09-30 19:39:14
【问题描述】:
Pagemethods 和 Json 有安全风险吗?(我不使用 cookie)。例如,我有一个 pagemethod,我将用户 ID 作为参数发送,但我不想将其显示给用户。用户可以从 pagemethod 获取用户 ID 吗?
【问题讨论】:
标签: asp.net javascript security json
Pagemethods 和 Json 有安全风险吗?(我不使用 cookie)。例如,我有一个 pagemethod,我将用户 ID 作为参数发送,但我不想将其显示给用户。用户可以从 pagemethod 获取用户 ID 吗?
【问题讨论】:
标签: asp.net javascript security json
是的,他们可以(查看用户 ID)。用户可以看到服务器和客户端之间的任何通信。用 fiddler 或 firebug 看看会发生什么。您可以将其视为任何常规的 get 或 post 请求。
我不知道为什么不使用它。在不了解任何背景的情况下,我无法就我是否会选择它给出明确的答案,但总的来说,没有理由不使用它,只需应用与 HTTP 获取和发布请求相同的安全性,就像在常规表单提交中一样.
【讨论】:
JSON 本身没有安全性,它是一种未加密的数据格式。
【讨论】:
它与规则 GET 和 POST 具有相同的安全风险,它只是另一种来回发送数据的格式。如果您使用的是常规 POST,那么任何人都可以看到相同的用户 ID。
因此,如果您不想让人们弄乱用户 ID,您可以添加某种依赖于用户 ID 的加密字符串以进行验证,以列出许多可能的解决方案之一。
【讨论】:
JSON 可以像页面一样利用 FormsAuthentication 安全性。如果我不希望最终用户看到标识符,我通常会在 User.Identity.Name 中存储该值(或我可以用来查找该值的东西)。
这种方法最复杂的部分是,如果您未通过身份验证,JSON 可能不会返回任何内容。为了解决这个问题,我倾向于包含一个未经身份验证的页面,用于让 JSON 告诉您用户是否已登录。
【讨论】:
我正在隐藏字段中隐藏用户 ID 参数,只是担心在该过程中可以更改它。感谢您的所有支持
【讨论】:
如果用户 ID 在隐藏的表单字段中,那么它会完全暴露给在浏览器中查看源代码的任何人。他们不仅可以看到 userId,还可以看到您如何将其发送到服务器。
一般来说,您永远不会信任客户端的敏感数据。假设他们总是可以操纵响应。
安全传递消息的方法是以字符串的形式给用户一些会话令牌。此会话令牌应以相当多的随机性生成,并将其用户名包含在算法中。查看有关 md5 和 salting 的资源。有了你给他们的这个令牌,现在的假设是他们不能对内容进行逆向工程。由于他们没有算法(它位于服务器端),因此他们无法篡改它。当然,您的服务器必须解密会话令牌才能检索 userId。
这本身并不意味着您的应用程序是完全安全的 - 它只是解决了许多潜在问题之一。
【讨论】: