在 Android 中安全存储 API 密钥

问题描述 投票:0回答:1

我直接在我的

Android Kotlin 应用程序中使用 openAI 来实现聊天功能,而不是使用存储 
ApiKey
并与
openAI
通信的自定义服务器,然后以
endpoint
API

我使用

JNI
将密钥存储在
.c
文件中并将其返回到我的 Kotlin 代码。这安全吗?或者存储 API 密钥的更好方法是什么。

src/main/java/vvv.altug.dreamgpt/NativeLibWrapper

package vvv.altug.dreamgpt

class NativeLibWrapper {
    companion object {
        init {
            System.loadLibrary("native-lib")
        }

        @JvmStatic
        external fun getApiKey(): String
    }
}

应用程序/jni/native-lib.c

#include <jni.h>
#include <string.h>

JNIEXPORT jstring JNICALL
Java_vvv_altug_dreamgpt_NativeLibWrapper_getApiKey(JNIEnv *env, jobject obj) {
    return (*env)->NewStringUTF(env,
                                "sk-XXXXXXXXXkeyXXXXXXXXX");
}

视图模型:

val apiKey = NativeLibWrapper.getApiKey()
android security java-native-interface openai-api chatgpt-api
1个回答
0
投票

不要这样做。无论获取 API 密钥的过程多么复杂和复杂,在某些时候它都会保留在内存中。任何人都可以在调试模式下重建您的 APK,只需在程序中的正确位置放置一个断点即可。

至少,用 AWS lambda 或类似的语言编写一个愚蠢的简单请求转发器,并让您的应用程序与 that 对话。这样,您就可以设置警报,以提醒人们何时(而不是是否)发现您的端点或多或少是一个免费使用的 OpenAI 端点。

© www.soinside.com 2019 - 2024. All rights reserved.