首页 > 解决方案 > 如何不在开源项目的 Visual Studio/C# 代码中存储 API 密钥

问题描述

我正在使用带有 .NET Core 3 WPF 应用程序的 Microsoft 应用程序中心。我不想将我的应用中心密钥直接存储在源代码中,因为我的软件是开源的。我正在使用 Visual Studio,并且我已经在谷歌上搜索了不直接将我的 API 密钥存储在源代码中的方法。我知道您不应该将它们存储在那里,但是在构建时,我需要将 API 密钥作为字符串访问代码,以便它可以将其传递给方法调用。

我并不非常担心有人通过反汇编程序运行我的应用程序,但我想阻止那些可能想四处闲逛的人。在 Visual Studio/c# 中,我似乎找不到任何方法来做这样的事情。就像 #ReadFromFile(filepath) 指令或可以读取文件内容并在编译时将其替换到文档中的东西。

有谁知道做这样的事情的方法?我已经看到很多关于“你不应该怎么做”的答案,但我真的没有资源去做他们中的很多人所做的事情。我只有一个相当简单的应用程序,它是开源的并使用 API 密钥。

标签: c#visual-studio

解决方案


我认为有3种可能的解决方案:

  1. 将密钥放入您的应用程序将在启动时读取的文件中,并将该文件从版本控制中排除。

  2. a)将您的密钥放入环境变量中。这是您为云应用程序执行此操作的方式。(但因为你需要它作为桌面应用程序,你电脑上的每个程序都可以读取它们)

    b) 如果您只在 Windows 上工作,请将其放在 Windows 注册表中。(其他程序也可以这样做)

  3. 使用密钥作为参数调用您的程序。您可以创建批处理/powershell(在 Windows 上)或 bash(在 linux 上)脚本或创建桌面快捷方式,这样您就不必一直通过终端启动应用程序。

(此外,您还可以加密密钥并在启动时要求用户输入密码。因此,即使其他应用程序可以读取您的密钥,它们也只有加密数据。)


推荐阅读