【问题标题】:How to process sensitive data in single page apps如何在单页应用程序中处理敏感数据
【发布时间】:2015-04-18 00:54:24
【问题描述】:

我需要了解单页应用程序,也许还有一些想法。

我想创建一个项目,我会用 MVC 来做。我还想使用 AngularJS 进行客户端编程。

我知道 AngularJS 适用于单页应用程序,并且在使用 SPA 时,您可以将数据发送到 API 进行处理。但是从 Angular 发送的数据对用户是可见的并且可以被操作。

我不希望用户能够看到任何数据或从 Internet 访问 API。我应该遵循的女巫方式?

我正在考虑将敏感的用户数据保存在 MVC 控制器中。例如,假设用户 ID 对我的项目非常敏感。如果我将用户 ID 保留在 javascript 变量中,当我使用某些命令将其发送到 API 时,用户将能够更改 ID 并操纵系统。但是,如果我通过用户身份验证将用户 ID 保留在 MVC 控制器中,并向我的 MVC 控制器发送请求,那么用户将无法更改它。但我知道这不是最好的做事方式,必须有更聪明的方式。

如果有人能解释这些东西在 SPA 中是如何工作的,或者当你同时使用 Angular 和 MVC 时,我会很高兴。

【问题讨论】:

  • 您处理身份验证的方式与在典型 MVC 应用程序中相同。如果用户通过 forms/cookie auth 登录,相同的 auth cookie 将被传递给 API 控制器并且用户将被认证; Authorize 过滤器和 User.Identity.GetUserId() 之类的东西仍然可以在您的控制器中使用。您也可以绕过 cookie 并改用令牌身份验证,但概念是相同的。 auth 中间件负责身份验证,控制器只处理上下文中的声明主体。

标签: javascript asp.net-mvc angularjs asp.net-web-api data-protection


【解决方案1】:

这行不通,您无法阻止用户篡改数据、制作自定义请求以及做她想做的任何事情。

您应该做的是永远不要相信即将到来的数据 - 这意味着验证每个传入的 id 两次,一次是在您生成它时,然后在它返回时。要么它很简单,你验证它是否合法,要么你加密它,所以当它回来时你解密它。

一些数据可以存储在服务器端,你提到的id就是这样的例子。这样用户永远不会看到数据,您传递的是会话 id,它是一个很长的随机值,而无法制作。这种方法伴随着使用的服务器端资源的成本,用户越多,请求之间存储的服务器资源就越多。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-12
    • 2015-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多