【问题标题】:HTML DOM handling security [closed]HTML DOM 处理安全[关闭]
【发布时间】:2016-07-06 13:02:23
【问题描述】:

我在 MVC 和 JQuery 中创建了一个 Web 应用程序,它通过查询 Web API 呈现/添加/编辑数据。

我正在调用我的 Web API 并将信息存储在 HTML DOM 中,以便我的应用程序进一步工作。

问题:

  1. 如何防止任何人查看和更改存储在 DOM 中的数据?
  2. 如何防止其他用户访问我的 Web API? 我应该为第一个问题加密数据并使用基于令牌的安全性来解决我的第二个问题还是针对给定问题有任何其他最佳解决方案?

【问题讨论】:

  • 这对于 SO 来说既太宽泛又离题。您应该在信息安全社区中提出安全问题
  • 第一个问题的答案是,你不应该在 DOM 中存储敏感数据,因此这个问题没有实际意义。第二个问题的答案是使用 ASP.NET 中内置的身份验证和授权
  • 我没有存储密码等敏感信息。当用户(任何用户)访问我的某个页面时,将对 Web API 进行 ajax 调用,生成我存储在 DOM 中以存储更多数据的 ID针对该 ID。

标签: c# jquery asp.net-mvc asp.net-web-api2 single-page-application


【解决方案1】:

第一个问题的答案是,您应该使用 SSL 保护您的连接。如果不是,则不应传输任何敏感数据句号。如果您使用 SSL,则可能需要在 DOM 中显示敏感数据。但是,不要将此与尝试使用 DOM 通过将敏感数据隐藏在属性中来混淆敏感数据。

第二个问题的答案是使用 ASP.NET 中内置的身份验证和授权。 这只是一个有限的概述,因为这是 ASP.NET 最大的领域之一

您需要了解 ASP.NET 请求响应是一个管道,请求将通过称为中间件的东西传播。中间件可以在通过的过程中修改请求,如果它们被编码这样做,那么它们可以修改响应并停止请求通过管道的传输。然后,响应将通过它通过的中间件返回(以相反的顺序),最后被发送回用户,参见图 1。

图 1

大多数(如果不是全部)人会将身份验证和授权放入中间件中。身份验证是说,你是你所说的那个人,通常是通过用户名和密码的组合。授权是说,如果这个人就是他们所说的那个人,他们是否被允许访问所请求的资源。

您可以使用 Cookie 身份验证、令牌身份验证或 Cookie 和令牌身份验证。 Cookie 和令牌用于存储有关用户的位,每次用户访问 API 端点(或服务器资源)时都会验证这些位。 Cookie 和令牌是一种持久化事实的方式,即这个人是谁,他们说他们是谁。

您可以使用 ASP.NET 属性来限制对资源的访问:

[Authorize]
public class SecretController
{

}

如果您想查看更复杂的身份验证和授权工具,IdentityServer 似乎是事实上的“企业”解决方案。

我之所以说企业级,是因为您可以在自己的小型应用程序中轻松推出它,但这有点像用大锤敲钉子。

【讨论】:

  • 因此,我不应该从页面直接调用 Web API,而是应该从应用程序调用 Web API 并将该数据存储在 session 中,而不是从我的应用程序调用每个 Web API来自用户可见的网页?
  • 不,一点也不。您在这里的评论向我暗示您不了解 ASP.NET WebApi。所以我建议你阅读一下 ASP.NET WebApi 是如何工作的,有一些关于这个主题的非常好的书籍。不过,为了回答您的评论,您将通过 ajax 或其他方式从页面执行 WebApi 请求,$.ajax('api/secret')
  • 是的,我正在学习。感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 2015-12-26
  • 2017-07-24
  • 2016-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-14
  • 1970-01-01
相关资源
最近更新 更多