2016-03-27 3 views
1

Я пытаюсь выпустить программное обеспечение, которое я написал для нескольких компьютеров в нескольких разных местах. Сама программа представляет собой приложение Windows Forms. Чтобы установить его, я добавил проект установки, который также отлично работает. Все файлы копируются в нужные папки и выбираются пользователем во время установки без ошибок. Но:Релиз сборки без файла конфигурации

Единственная проблема заключается в том, что файл конфигурации, содержащий разумные данные, например строку соединения SQL, также копируется/устанавливается на целевой компьютер.

Есть ли способ хранить эти данные нечитабельно для пользователя в приложении? Я думал о том, чтобы просто написать его в классе, так как приложение становится запутанным, но я не уверен, насколько это достаточно безопасно, и если это действительно способ ...

Любая помощь оценена!

+0

** - ** Вы должны знать, что чувствительные части приложения могут включают: ** • ** Настройки и конфигурации, такие как строки подключения. ** • ** Бизнес-логика и правила проверки. ** • ** Полномочия на доступ к данным и функциям. ** - ** Если вы полагаетесь на обфускацию, вы можете хранить конфиденциальные данные в коде приложения или зашифрованных файлах настроек. Обфускация делает трудным и ухабистым для хакеров. Но если вы хотите повысить защиту своего приложения, вам следует рассмотреть серверные решения. –

ответ

0

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

+0

Вопрос в том, считаете ли вы, что пользователь декомпилирует вашу программу, чтобы получить строку соединения? Если ответ отсутствует, нормально, если вы напишете его в коде. – Lin0815

0

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

Теоретически, если приложение, работающее в пользовательском режиме, может, как угодно, получить доступ к незащищенным данным, так что пользователь может (де-обфускация, дамп памяти и т. Д.). Поскольку вся информация, необходимая для генерации или расшифровки конфиденциальных данных, присутствует в автономном режиме (код, диск, память), один - с достаточным количеством навыков - может определить схему дешифрования, изучив код (даже машинный код)

приложение в качестве пользователя с быстрым вычислением и массивными навыками памяти, чтобы он мог «сфотографировать» ваш код «на лету» и выполнить необходимые вычисления для дешифрования «безопасных» данных.

Смежные вопросы