c# - 如何不在开源项目的 Visual Studio/C# 代码中存储 API key

标签 c# visual-studio

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

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

有谁知道有什么方法可以做这样的事情吗?我看过很多关于“你不应该这样做”的答案,但我真的没有资源去做他们中的很多人所做的事情。我只有一个相当简单的开源应用程序并使用 API key 。

最佳答案

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

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

  2. a) 将 key 放入环境变量中。这就是云应用程序的做法。 (但是因为您需要将其用于桌面应用程序,您 PC 上的每个程序都可以读取它们)

    b) 如果您仅在 Windows 上工作,请将其放入 Windows 注册表中。 (其他程序也可以重读此内容)

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

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

关于c# - 如何不在开源项目的 Visual Studio/C# 代码中存储 API key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58092348/

相关文章:

c++ - QtCreator 如何在构建 Windows 应用程序时避免控制台窗口?

windows - 如何指定在哪个监视器上打开控制台窗口?

c# - 如何使用 LINQ TO SQL 检查用户名是否已存在于数据表中

c# - LINQ 返回最大重复项但反向排序

c# - EFCore 在 dbcontext 的生命周期内使用单个 dbconnect

c# - 如何在 WPF 中创建具有 Microsoft Web 应用程序样式的菜单

visual-studio - Visual Studio 2015 新文件不会自动添加到源代码管理中

c# - Visual Studio /C# : Debugging imported DLL

c# - SqlParameterCollection 仅接受非空 SqlParameter 类型对象,而不接受 Microsoft.Data.SqlClient 中的 SqlParameter 对象

c# - ThreadPool with 2 WaitCallback 有时会卡住