【问题标题】:How safe are "secret" keys in Windows 8 (WinJs) apps?Windows 8 (WinJs) 应用程序中的“秘密”密钥有多安全?
【发布时间】:2013-08-22 21:22:07
【问题描述】:

我正在用 WinJS 做一个爱好项目 Windows 8 应用程序。当我调用一个需要 api 密钥和 oauth 身份验证的外部 api 时,我有许多需要“保密”的密钥。

我在网络上看到了有关如何访问和修改计算机上 WinJs(和 C#)应用程序源代码的详细说明。但我认为这些都在测试/预览时间范围内?

我的 Google 技能似乎无法告诉我这是否已经修复,有人知道吗?

如果不解决,人们如何处理这些情况?

欢迎任何提示和建议:)

【问题讨论】:

    标签: security windows-8 winjs code-access-security secret-key


    【解决方案1】:

    这里有几个选项。

    1. 如果可能,集成 Azure 移动服务并让它执行 oAuth。您的密钥在云端是保密的。
    2. 在您的 WinJs 应用程序中存储加密的主密钥。然后秘密也被加密并存储在本地。我使用https://github.com/cauld/winjs-oauth-for-twitter 并稍作修改,当我取回密钥时,我将其存储在凭据管理器中。

    任何计算机语言编译的任何本地应用程序都可以被篡改,您只需要一个调试器。如果你加密所有东西,理论上我可以加载一个调试器,附加到 http 堆栈库并观察数据输出(不包括像 Fiddler 这样更简单的技术来观察这些数据)并提取我想要的任何东西 - 相当容易。所以问题是你想防止什么?

    【讨论】:

    • Re:1 我正在考虑注册试用 Azure 帐户,但不幸的是注册不起作用:( Re:2 当你说 - 存储加密的主密钥时,你必须存储解密的密钥也是如此,那么加密它没有意义,或者?
    • 使用密码库等本地存储机制对其进行加密。它并非完全不受客户篡改的影响,但通常具有适当的保护级别。这就是客户端所需的任何密钥的问题——你不能完全阻止对它的访问。这在从客户端运行的 oAuth 应用程序中很常见。 Azure 发生了什么?你能用截图/描述给我发电子邮件吗?
    【解决方案2】:

    如果您的应用可以帮助发起中间人攻击,则您不应将机密数据以纯格式长时间保存在内存或磁盘中。另外,storing encrypted data locally, alongside with the algorithm and the algorithm key/hash is a recipe for security incidents

    没有什么灵丹妙药可以保护您的代码或数据免遭最终用户(或对最终用户计算机具有物理访问权限的人)的探测,请查看那里的游戏保存编辑器和游戏培训师的数量。不要将您的业务逻辑或重要数据(例如应用内购买)以纯文本或类似形式放置,至少添加一些混淆

    【讨论】:

      猜你喜欢
      • 2015-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-02
      • 2012-05-23
      • 2018-05-31
      相关资源
      最近更新 更多