Как я могу скрыть детали в моем исполняемом файле .NET? - PullRequest
1 голос
/ 25 августа 2009

Если у меня есть простое приложение CRUD, исполняемое в .NET, что мешает пользователю загрузить его в RedGate Reflector и просмотреть все содержимое, включая строки подключения к БД, пароли и т. Д.?

Можно ли как-нибудь защититься от этого?

Ответы [ 7 ]

3 голосов
/ 25 августа 2009

Нет, лучшее, что вы можете сделать - это запутать сборку, чтобы ее было труднее читать и понимать, но кроме этого нет способа помешать кому-либо использовать Reflector или ILDASM для просмотра IL в вашей сборке.

Помните, что CLR должен уметь читать и эту сборку, поэтому если CLR может читать сборку, то может и любой другой.

2 голосов
/ 25 августа 2009

Запутывание никогда не является правильным ответом. Может, ты ошибаешься в этом.

Я могу придумать несколько способов, чтобы строка подключения была либо недоступна, либо не важна.

Вы можете поместить свою базу данных позади веб-службы, чтобы строка подключения к базе данных была известна только веб-службе. Разумеется, вам потребуется другой способ ограничения доступа к веб-службе, например использование учетных данных для входа.

Или вы можете назначить каждому пользователю свое имя / пароль для входа в SQL. Таким образом, они будут знать свой собственный идентификатор пользователя / пароль, но будет легко «отключить» его из базы данных. Это также дает вам гораздо лучший контроль над доступом каждого человека к самой базе данных ... например, к каким таблицам / представлениям у них есть доступ, и к какому типу доступа.

1 голос
/ 23 июня 2011

Вы можете поместить свои пароли и строки подключения в хеш-таблицу или XML, а затем зашифровать свои данные, создать ZIP-файл с паролем, скрытым в текстовом файле, скрытом со стенографией за изображением. Все ваши распаковки и чтения производятся в памяти после чтения, освобождают память, вызывают сборщик, после использования ваших строк подключения и очистки ваших переменных. Храните в памяти только те данные, которые вам нужны, будьте осторожны при использовании оперативной памяти.

1 голос
/ 25 августа 2009

Зависит от того, что вы хотите защитить.

Если это строка подключения к БД с паролями, не храните их. Пример: настройте пул приложений IIS для запуска учетной записи с ограниченными услугами для подключения к базе данных и надежной безопасности. При условии достойной безопасности базы данных знание имени сервера и т. Д. Бесполезно.

1 голос
/ 25 августа 2009

включая строки подключения БД, пароли

Определение защиты в ядре базы данных: ограничение пользователей, ограничение компьютеров, с которых пользователи могут подключаться, ограничение того, что пользователи могут делать, и / или указание, что пользователи могут взаимодействовать с базой данных только через определенные «хранимые процедуры».

1 голос
/ 25 августа 2009

Вы можете затруднить это (обфускация, шифрование строк и т. Д.), Но никогда не будет возможности выполнить обратный инжиниринг, пока пользователь имеет доступ к исполняемому файлу.

0 голосов
/ 25 августа 2009

Обфускация будет вариант. Но я думаю, что вы не можете скрыть, например, строки пароля полностью. Это действительно небезопасно.

...