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

时间:2013-09-17 15:27:32

标签: security windows-8 windows-runtime windows-store-apps winjs

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

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

2 个答案:

答案 0 :(得分:4)

由于代码中的所有内容都可以进行分析,反编译,调试,最终,如果您希望使用作为应用程序包的一部分嵌入的密钥来发布应用程序,这似乎是一种混淆而非安全的工作。

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

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

  1. 按设备跟踪应用程序激活
  2. 为每个设备(令牌)提供唯一的激活码
  3. 按设备监控API的使用情况,包括启动昂贵操作的服务。
  4. 要获取应用程序的唯一硬件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));
    

    PasswordVault documentation

答案 1 :(得分:1)

您可以使用PasswordVault存储敏感数据。 Here's MSDN sample.

您也可以使用local storage setting,这也是无法访问的。