0

我的应用程序需要使用特定的消费者密钥和固定值的消费者秘密发布到 Twitter。

我无法确定在我的应用程序中安全存储这些值的最佳方式(用户不应该能够使用另一个 Twitter 应用程序 - 只有我的)。

以下是我已经尝试过的一些事情:

场景一:存储在 App.Settings 中

失败- App.Settings 最初未加密。

场景 2:存储为硬编码值并使用 Dotfuscator

失败- 变量在被混淆后在反射器中清晰可见。

场景 3:加密并存储为硬编码值。

失败- 虽然这通过了场景 1,但密钥本身将被硬编码(以确保它生成正确的解密值)并且对于场景 2 可见。

我遇到的主要问题是,为了让 Twitter 识别我的消费者密钥/秘密,它们需要被解密,但是我不希望在应用程序本身中明确设置这个值。

我解决这个问题的最佳方法是什么?

4

2 回答 2

1

正如斯蒂芬 C. 提到的那样,作为我如何保护 OAuth 密钥免受用户反编译我的项目的答案?,你无能为力。

我最好的选择是让它尽可能地难,但要意识到它从来都不是真正安全的事实。

于 2013-01-30T08:45:04.563 回答
-1

App.Settings 最初未加密

您可以使用ProtectedData类对此类数据进行加密/解密,并将加密值存储在.settings

    public static String Encrypt(this String unSecuredString)
    {
        if (String.IsNullOrEmpty(unSecuredString))
            return unSecuredString;

        var decryptedData = Encoding.UTF8.GetBytes(unSecuredString);
        var encryptedData = ProtectedData.Protect(decryptedData, null, DataProtectionScope.CurrentUser);

        return Convert.ToBase64String(encryptedData);
    }

    public static String Decrypt(this String securedString)
    {
        if (String.IsNullOrEmpty(securedString))
            return securedString;

        var encryptedData = Convert.FromBase64String(securedString);
        var decryptedData = ProtectedData.Unprotect(encryptedData, null, DataProtectionScope.CurrentUser);

        return Encoding.UTF8.GetString(decryptedData);
    }
于 2013-01-30T08:32:25.943 回答