c# - 安全问题:将密钥存储为字符串的安全性
问题描述
我正在使用 .NET 4.7.1 和 Visual Studio 2017(社区版),并且我一直将敏感的密钥/许可证数据作为字符串存储在程序中。假设我们有以下字符串:
string password = "admin123"
从十六进制编辑器或类似方法中提取的安全性如何?我不精通十六进制编辑,但经过一些琐碎的搜索后,似乎字符串以某种方式被混淆了。
任何见解将不胜感激,谢谢。
解决方案
这一点都不安全。任何拥有反汇编程序(例如ILSpy)和您的应用程序的人都可以访问您的密码。
为了说明,我创建了一个愚蠢且毫无意义的简单控制台应用程序:
using System;
namespace TestApp
{
class Program
{
private static string password = "admin123";
static void Main(string[] args)
{
Console.Write($"My ultra top secret password is: {password}.");
}
}
}
我编译了它,并在 ILSpy 中打开它。这是我所看到的:
哦,男孩,这不好......
简而言之,不要在代码中以纯文本形式存储敏感信息。假设您在应用程序/DLL 中编码的任何内容都不会自动混淆/安全。这是不安全的。这里有很多其他帖子比我能更详细地讨论该主题,所以我不会在这里讨论“如何”。
推荐阅读
- jenkins - kubernetes 上的 jenkins 在加载插件时抛出磁盘空间错误和错误
- ionic-framework - 无法显示来自环回服务器的图像
- java - 如何等待订阅完成?
- c# - 在编辑记录中获取下拉值
- javascript - 从 Cheerio 解析的 html 文件中获取工具提示文本
- prolog - 序言切“!” erlang中的运算符
- java - 将 Spring Boot WebMvcConfigurer 限制为仅指定路径
- java - 如何在使用 prod 数据库时停止 java 实体以获取保存#java
- r - 按特定列分组并在 Python 中使用 dplython 汇总行数
- javascript - 如何在不使用叠加层的情况下标记开放层中的特征