c# - 如何不在开源项目的 Visual Studio/C# 代码中存储 API 密钥
问题描述
我正在使用带有 .NET Core 3 WPF 应用程序的 Microsoft 应用程序中心。我不想将我的应用中心密钥直接存储在源代码中,因为我的软件是开源的。我正在使用 Visual Studio,并且我已经在谷歌上搜索了不直接将我的 API 密钥存储在源代码中的方法。我知道您不应该将它们存储在那里,但是在构建时,我需要将 API 密钥作为字符串访问代码,以便它可以将其传递给方法调用。
我并不非常担心有人通过反汇编程序运行我的应用程序,但我想阻止那些可能想四处闲逛的人。在 Visual Studio/c# 中,我似乎找不到任何方法来做这样的事情。就像 #ReadFromFile(filepath) 指令或可以读取文件内容并在编译时将其替换到文档中的东西。
有谁知道做这样的事情的方法?我已经看到很多关于“你不应该怎么做”的答案,但我真的没有资源去做他们中的很多人所做的事情。我只有一个相当简单的应用程序,它是开源的并使用 API 密钥。
解决方案
我认为有3种可能的解决方案:
将密钥放入您的应用程序将在启动时读取的文件中,并将该文件从版本控制中排除。
a)将您的密钥放入环境变量中。这是您为云应用程序执行此操作的方式。(但因为你需要它作为桌面应用程序,你电脑上的每个程序都可以读取它们)
b) 如果您只在 Windows 上工作,请将其放在 Windows 注册表中。(其他程序也可以这样做)
使用密钥作为参数调用您的程序。您可以创建批处理/powershell(在 Windows 上)或 bash(在 linux 上)脚本或创建桌面快捷方式,这样您就不必一直通过终端启动应用程序。
(此外,您还可以加密密钥并在启动时要求用户输入密码。因此,即使其他应用程序可以读取您的密钥,它们也只有加密数据。)
推荐阅读
- adonis.js - 如何防止模型属性在插入 Adonisjs 时批量分配
- python - 在 Python 中计算 pandas 数据框中的熵
- java - 无法在 Java gradle 项目中使用我的 Manifold 扩展方法
- java - 编码中没有错误显示,但在我登录主页后它会崩溃。logcat显示错误在inflate行
- git - 如何在 gitlab 作业脚本的特定分支中执行 shell 脚本文件?
- c# - C# ListView 新增项不显示正确数据
- asp.net - 从剃刀页面调用方法
- python - 使用其块对大文件进行排序
- python - 为什么我不能遍历熊猫总和?
- python - 使用python打开带有文件夹ID的文件夹