如何在 Windows 应用商店应用程序包中存储“秘密”字符串

San*_*dro 2 security windows-8 windows-runtime winjs windows-store-apps

您可能知道,深入研究使用 HTML、CSS 和 JS 编写的 Windows 应用商店应用程序的源代码非常容易。

我的应用程序使用 REST API,它在服务器上启动了一项非常昂贵的操作。为了节省 CPU 资源,API 使用了类似 HMAC 的东西。要生成 HMAC,需要一个秘密。我怎样才能安全地保存那个秘密?我正在寻找类似 iOS 密钥库的东西。

Wir*_*rie 5

由于代码中的所有内容都可以被分析、反编译、调试,最终,如果您想发布带有嵌入应用程序包一部分的密钥的应用程序,这似乎是一种混淆而不是安全的努力。

由于您不使用用户安全来控制访问,因此我建议您考虑一种方案,您可以激活和授权应用程序,而不是尝试在应用程序中的某处存储“秘密”。

如果您为应用程序授权添加了 RESTful API,您可以:

  1. 按设备跟踪应用程序激活
  2. 为每台设备提供唯一的激活码(令牌)
  3. 监控每个设备的 API 使用情况,包括启动昂贵操作的服务。

要为您的应用程序获取唯一的硬件 ID,您需要阅读本指南:http : //msdn.microsoft.com/en-us/library/windows/apps/jj553431.aspx

获得令牌后,您可以使用PasswordVault安全地存储令牌:

var vault = new Windows.Security.Credentials.PasswordVault();
vault.add(new Windows.Security.Credentials.PasswordCredential(
    "MyWindows8App", "default", token));
Run Code Online (Sandbox Code Playgroud)

密码保险箱文档