Как я могу скрыть жестко запрограммированное имя пользователя и пароль от опытного пользователя с помощью декомпилятора? - PullRequest
1 голос
/ 03 марта 2012

Я хочу создать простое приложение на C #, которое загружает текстовый файл на мой веб-сервер.Но для этого мне нужно, чтобы мое имя пользователя и пароль были включены в код.Я пытался использовать обфускатор, который входит в состав Visual Studio, но после декомпиляции с помощью бесплатного декомпилятора я все же смог их найти.

Возможно ли это?

Спасибо!

Ответы [ 7 ]

4 голосов
/ 03 марта 2012

Возможно, вам нужно переосмыслить основы здесь

  1. Вы можете никогда обезопасить платформу, к которой злоумышленники имеют физический доступ к
  2. Вы хотите достичь ситуациив результате чего ваши пользователи на своей собственной платформе могут отправлять текстовые файлы на ваш сервер, но только с помощью вашего приложения.Даже с использованием SSL это становится сложно, поскольку они всегда могут контролировать HTTP-связь
  3. Вы можете никогда доверять всему, что исходит из Интернета.Да, это включает и ваш текстовый файл.

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

Для чего вы используете это имя пользователя / пароль?

3 голосов
/ 03 марта 2012

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

Возможно, вы могли бы создать отдельного пользователя на своем веб-сервере с очень ограниченными разрешениями и использовать его вместо этого?Тогда вам будет меньше о чем беспокоиться, если пользователь сможет получить учетные данные из вашего приложения.

2 голосов
/ 03 марта 2012

номер

Единственный способ запретить пользователям декомпилировать ваш код и видеть в нем все , это не предоставлять им свой код, т. Е. Размещать код на сервере (под вашим контролем) вместо клиент.

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

1 голос
/ 03 марта 2012

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

Если вы находитесь в среде, где вы не можете контролировать учетные данные Windows, вам следует рассмотреть возможность авторизации на стороне сервера через безопасное соединение, такое как SSL.

1 голос
/ 03 марта 2012

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

1 голос
/ 03 марта 2012

Должен ли он быть в исходном коде?Если это необходимо запустить только на вашем компьютере, когда вы вошли в систему, вы можете сохранить пароль в файле и защитить его правами доступа к файлу.

1 голос
/ 03 марта 2012

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

Полагаю, у вас может быть веб-запрос, который возвращает одноразовые имя пользователя и пароль ... поэтому ваше приложение будет вызывать его, получить пользователя / pwd и использовать его для загрузки. После использования вам понадобится способ отключить / удалить эту учетную запись.

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

...