【发布时间】:2021-07-20 04:41:35
【问题描述】:
如果我将 API 密钥保存到 Flutter_secure_storage,它们必须首先公开。如何在不暴露它们的情况下对其进行预加密或保存到安全存储?
我想在安全存储密钥的地方增加一层安全性,只有在进行 API 调用时才会公开。但是,如果我对密钥进行了硬编码,那么即使仅在初始应用程序运行时它们也会暴露出来。你如何绕过这个逻辑?
【问题讨论】:
如果我将 API 密钥保存到 Flutter_secure_storage,它们必须首先公开。如何在不暴露它们的情况下对其进行预加密或保存到安全存储?
我想在安全存储密钥的地方增加一层安全性,只有在进行 API 调用时才会公开。但是,如果我对密钥进行了硬编码,那么即使仅在初始应用程序运行时它们也会暴露出来。你如何绕过这个逻辑?
【问题讨论】:
如果这是一个 web 项目,你可以在两端使用类似 base64 的东西,然后像这样 debase 并保存:
PHP 上的服务器
apiKeyEncoded = base64_encode(apiKeyGenerator());
客户:
apiKeyEncoded = await getApiKey();
apiKeyDecoded = base64Decode(apiKeyEncoded).toString(); //this is the usable one, save it.
现在,如果该项目专注于移动使用,我认为您实际上不需要实现它,代码会相同。
【讨论】:
为避免暴露 API 密钥,您应该将密钥存储在“.env”文件中,并在进行 API 调用时使用flutter_dotenv 包访问它。虽然这种方法在进行 API 调用时无济于事。如果您真的想保护公开密钥的安全,您应该将 API 调用移至后端,这样客户端就无法看到这些网络调用。
【讨论】: