2013-09-13 3 views
1

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

1 Пользователь регистрирует учетную запись на веб-сайте и заряжает ее.

2- Когда приложение запущено, он запрашивает у пользователя имя пользователя и пароль своего веб-сайта.

3- Когда пользователь вводит учетные данные, приложение пытается войти на сайт (или просто отправляет запрос с именем пользователя, который возвращает количество баллов), и проверяет количество очков, которое у пользователя есть.

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

Q- Как я могу защитить логин и процесс проверки, чтобы я мог убедиться, что все идет хорошо, и у пользователя будет доступ к моему приложению, заплатив его или взломав: D?

+0

Если это приложение WinForms или WPF, то нет возможности предотвратить двоичную модификацию. Требовать, чтобы приложение аутентифицировало лицензионный ключ с сервером и проверило его через некоторое время, чтобы узнать, действительна ли лицензия. Если пользователь настойчив и достаточно осведомлен, он сможет обойти защиту, но есть только так много, что можно сделать. – Romoku

+0

Если код запущен на машине хакеров/злоумышленников, они могут редактировать всю проверку. Зачем беспокоиться о создании сайта spoof? –

+0

@Damien_The_Unbeliever: Есть ли дешевые SSL-сертификаты, доступные по цене?. Также я не беспокоюсь о бинарной модификации или обратном приложении, потому что я знаю, что в какой-то момент это неизбежно.Тем не менее, я беспокоюсь о каком-то наивном новичке, который ничего не знает об обратном ... просто настраивает http-сервер и перенаправляет подключения моего клиента к нему, чтобы подделать ответ на вопрос, поэтому мне пришлось задать этот вопрос. –

ответ

1

У вас должна быть криптографическая гарантия того, что ответ, содержащий точки, определенно генерируется доверенным источником (т. Е. Вашим сайтом). Это вопрос, который вы поднимаете в пункте 4.

Ответ на это - это цифровая подпись с использованием сертификатов X509. У вас есть сервер, генерирующий ответ с общей суммой очков пользователей. Затем вы подписываете цифровую подпись с помощью закрытого ключа и отправляете его клиенту.

Клиент проверяет цифровую подпись с использованием открытого ключа сертификатов и принимает ее только в том случае, если она действительна.

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

.Net содержит хорошие интерфейсы API для этого, например:

http://msdn.microsoft.com/en-us/library/system.security.cryptography.xml.signedxml.aspx

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

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

+0

Есть ли дешевые SSL-сертификаты, доступные по цене?. Также я не беспокоюсь о бинарной модификации или обратном приложении, потому что я знаю, что в какой-то момент это неизбежно. Тем не менее, я беспокоюсь о каком-то наивном новичке, который ничего не знает об обратном ... просто настраивает http-сервер и перенаправляет подключения моего клиента к нему, чтобы подделать ответ на вопрос, поэтому мне пришлось задать этот вопрос. –

+0

Я думаю, вы могли бы использовать самозаверяющий сертификат, поскольку вы можете отправить открытый ключ вместе с подписанным контентом. Нет необходимости в коммерческих сертификатах. Или вы можете использовать SSL-сертификат для своего сайта ... –

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