繁体   English   中英

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

[英]How to not store API key in visual studio/c# code in an open source project

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

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

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

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM