将敏感信息保存在javascript代码中的安全漏洞

时间:2016-04-08 15:49:07

标签: javascript security local-storage bundler

每个人都知道你不应该在你的js代码中保留sensitiveInfo变量。更好的方法是将其放在本地存储中。你可以借助我的例子解释第一种方法的漏洞吗?

示例: 您使用bundler,它将所有js文件捆绑在一起。 sensitiveInfo不是全局的,而是存储在YourStorage.js中。要访问保存它的文件:

import YourStorage from 'somepath/YourStorage';
YourStorage.sensitiveInfo = newValue; // QUESTION: can you steal this value? Is it accessible from console?

问题:

  1. 是否可以从控制台访问sensitiveInfo变量?
  2. 您能否描述某人如何窃取sensitiveInfo
  3. 的机制
  4. 如果有人可以从我的代码中窃取它,为什么他不能从本地存储?
  5. 更新:(我正在努力保护谁?)我正在编写移动网络应用,用户可以花钱购物。我想保护他们免受各种攻击,他们可以放钱(即本地安装的病毒)

1 个答案:

答案 0 :(得分:2)

可以在用户设备上轻松看到任何可下载的javaScript内容。保护必须来回传递给客户的敏感信息的最常用方法是:

首先,使用SSL通过“电线”加密信息。

其次,如果数据具有非常敏感的性质 - 例如用于处理信用卡信息的令牌(不要将卡号存储在此令牌中!) - 应使用种子/密钥对数据进行自身加密安全地存储在应用程序服务器上。

通常,您会编写应用程序以同时要求验证用户身份和设备。验证完成后,您将使用仅存储在应用程序服务器端的密钥解密令牌。

使用这种做法,您可以合理地假设用户和设备是他们所说的人。当然,这些应用程序本身需要适当的身份验证 - 所述凭证不存储在设备上 - 以防止被盗设备被轻易地用于访问应用程序帐户/数据。不要仅仅依靠设备屏幕锁定来保证安全。