Как мое приложение определяет, является ли текущая дата реальной текущей датой? - PullRequest
1 голос
/ 09 марта 2011

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

Следовательно, мое приложение использует этот код для проверки текущего времени:

Calendar nowCalendar = Calendar.getInstance();

Однако пользователь может манипулировать этим, изменяя свои настройки даты и времени.

Вопрос: Как мое приложение сообщает, манипулировал ли пользователь своим временем и датой? или же Как узнать, установил ли пользователь «автоматическую» настройку даты и времени?

Можете ли вы предложить самый простой способ проверить интернет на текущее время?

Ответы [ 2 ]

8 голосов
/ 09 марта 2011

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

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

Одним из способов проверки времени в Интернете является простой запрос к HTTP-серверу. Например, в Google (вы должны использовать свой собственный сервер для этого).

Запрос:

HEAD / HTTP/1.1
Host: google.com

Ответ:

HTTP/1.1 301 Moved Permanently
Location: http://www.google.com/
Content-Type: text/html; charset=UTF-8
Date: Wed, 09 Mar 2011 16:04:48 GMT
Expires: Fri, 08 Apr 2011 16:04:48 GMT
Cache-Control: public, max-age=2592000
Server: gws
Content-Length: 219
X-XSS-Protection: 1; mode=block

Как видно, все HTTP-серверы сообщают о текущей системной дате в заголовке Date.

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

0 голосов
/ 09 марта 2011

Вы можете получить доступ к протоколу сетевого времени в реальном времени. Вы можете увидеть определение в Википедии

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...