Определите, действительна ли подписка, не сравнивая с DateTime.Now. - PullRequest
0 голосов
/ 28 августа 2011

Этот вопрос может быть простым и ответ очевиден, но я не могу найти решение прямо сейчас.Я создал приложение, в котором есть большой недостаток.В свойстве моего класса User я проверяю, истек ли срок действия подписки пользователя.Для этого я сравниваю дату окончания подписки с DateTime.Now:

return (DateTime.Compare(DateTime.Now, subEndDate) > 0);

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

Ответы [ 4 ]

4 голосов
/ 28 августа 2011

Позвоните в веб-службу или проверьте базу данных, чтобы определить, активна ли подписка

1 голос
/ 28 августа 2011

Это на самом деле имеет значение?Если ваш продукт основан исключительно на Интернете, вам нужно беспокоиться только о времени на сервере.Если время сервера может быть изменено без вашего согласия, у вас, вероятно, возникнут более серьезные проблемы.

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

1 голос
/ 28 августа 2011

Может быть, вы могли бы извлечь логику истечения срока подписки из вашей клиентской программы и поместить ее во внешнюю службу, тогда ваше клиентское приложение сможет подключиться к другому серверу и получить сведения об истечении срока действия на основе переданного пользовательского параметра?

0 голосов
/ 28 августа 2011

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

...