首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >URL中包含敏感数据的ASP.NET MVC受保护成员区域

URL中包含敏感数据的ASP.NET MVC受保护成员区域
EN

Stack Overflow用户
提问于 2009-08-15 16:21:36
回答 3查看 446关注 0票数 1

假设ASP.NET MVc应用程序有一个受保护的成员区域。生成的某些URL包含敏感数据,例如Accounts/ 123,123是敏感数据,如帐号。如果用户的机器后来被攻破,攻击者将无法访问Accounts/123,因为这将受到保护,但我们仅通过查看用户的浏览器历史记录就可以获得用户的账号。我能看到的避免这种情况的唯一方法是即使在受保护的区域也不要在URL中使用敏感数据。

我在想场景,其中敏感数据是用于索引、详细信息、编辑的ID。一种解决方案可能是向表中添加另一个表示敏感数据的字段,如果该字段遭到破坏,则没有任何意义,但可以在URL中使用。

还是有别的办法?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-08-15 16:32:27

我要说的是,不要在URL中使用敏感数据,并将帐号存储在用户会话中(如果假设有多个帐号,则只保留当前帐号)。

编辑

查看您的编辑后:

如果您真的想要一种安全的方法来实现这一点,而客户端又不知道通过页面的URL,那么可以考虑这个场景。

  • User has multiple accounts
  • Account are link on the page
  • 帐户"ID“是使用当前会话id进行加密的,用户单击该链接后会转到该链接

现在你的帐户ID不再可见,加密密钥只对该会话和该ID有效。授予的会话ID可能并不总是唯一的,但这将对历史/缓存中的“查看器”造成巨大的威慑。

票数 7
EN

Stack Overflow用户

发布于 2009-08-15 16:50:59

不要使用HTTP GET来请求敏感数据。请改用HTTP POST。将[AcceptVerbs(HttpVerbs.Post)]放在您的ActionResult上以确保安全。

同样,不要使用HTTP get来获取将在AJAX请求中使用的数据,因为有一个subtle JSON vulnerability

票数 0
EN

Stack Overflow用户

发布于 2010-02-06 22:52:31

我也有过类似的issue...still想法,认为最好的solution...but实现了汤姆的解决方案。一个附带的问题是,对于mvc,url必须是“友好的”。HtmlEncode不能工作,因为它允许/的。Base64可以使用以下助手方法:

代码语言:javascript
运行
复制
public static string Base64ToUrlFriendlyBase64(string value)
{
    return value.Replace("/", "_").Replace("+", "-");
}

public static string UrlFriendlyBase64ToBase64(string value)
{
    return value.Replace("_", "/").Replace("-", "+");
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1282243

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档