Секретный вопрос: безопасность хранения ключа в виде строки - PullRequest
0 голосов
/ 25 марта 2019

Я использую .NET 4.7.1 и Visual Studio 2017 (Community Edition) и храню конфиденциальный ключ / данные лицензии в виде строки в программе. Предположим, у нас есть следующая строка:

string password = "admin123" 

Насколько это безопасно от извлечения в шестнадцатеричном редакторе или подобных методах? Я не очень разбираюсь в шестнадцатеричном редактировании, но после нескольких тривиальных поисков кажется, что строка каким-то образом запутана.

Любое понимание будет высоко ценится, спасибо.

1 Ответ

3 голосов
/ 25 марта 2019

Это не безопасно вообще.Любой пользователь с дизассемблером (например, 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.Вот что я увидел:
ILSpy screenshot of password in app
О, боже, это нехорошо ...

Короче говоря, не храните конфиденциальную информацию в виде простого текста внутри вашегокод.Предположим, что вы ничего не кодируете в приложение / DLL, автоматически запутывается / безопасно.Это не безопасно.Здесь есть много других постов, которые более подробно освещают эту тему, чем я, поэтому я не буду обсуждать здесь «как».

...