0

私のアプリケーションには、特定のコンシューマ キーと固定値のコンシューマ シークレットを使用して Twitter に公開する必要があります。

これらの値を自分のアプリケーションに安全に保存する最善の方法を判断するのに苦労しています (ユーザーは別の Twitter アプリケーションを使用できないはずです - 私だけのものです)。

ここに私がすでに試したいくつかのことがあります:

シナリオ 1: App.Settings に保存する

失敗- App.Settings は最初は暗号化されていません。

シナリオ 2: ハード コードされた値として保存し、Dotfuscator を使用する

不合格- 変数は難読化された後、Reflector で明確に表示されます。

シナリオ 3: 暗号化して、ハードコードされた値として保存します。

失敗- これはシナリオ 1 に合格しますが、キー自体は (正しい復号化された値を確実に生成するために) ハードコーディングされ、シナリオ 2 で表示されます。

私が抱えている主な問題は、Twitter が私のコンシューマー キー/シークレットを認識できるようにするためには、それらを復号化する必要があることですが、この値をアプリケーション自体に明示的に設定したくありません。

これに取り組むための最良の方法は何ですか?

4

2 に答える 2

1

Stephen 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 に答える