Android: как добавить pw / security в настройки времени / даты телефона, чтобы пользователь не мог изменить его

1

Мое приложение будет иметь "часы в" в списке. Когда пользователь нажмет на этот элемент, он возьмет время/дату с самого телефона и отправит эти данные на сервер. Я предпочитаю делать это с использованием времени сервера, поскольку, если у них нет сигнала/приема, они не смогут синхронизировать. Я хотел бы добавить пароль в настройки самого времени и даты, чтобы пользователь не смог воспользоваться преимуществами изменяя время при входе в систему. Как я могу это сделать?

Спасибо

  • 0
    Я подозреваю, что для этого вам придется написать собственное ПЗУ.
  • 0
    это единственный способ? другой способ доступа к корню телефона, где я могу изменить настройки безопасности времени / даты?
Показать ещё 4 комментария
Теги:
security
date
time
passwords

3 ответа

0
Лучший ответ

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

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

  • 0
    Я думаю, что лучшим решением является использование сервера, когда это возможно, и условно принимать во внимание (но записывать как не совсем доверенные) один или несколько фрагментов данных со стороны клиента, когда к серверу невозможно получить доступ. Решение, которое работает в большинстве случаев и помогает выявить меньшую часть ситуаций, которые должны обсуждать вовлеченные живые люди, должно зайти довольно далеко.
  • 0
    если я решил сделать метод времени сервера. Что я могу сделать, чтобы войти в зону без приема? Если нет приема, могу ли я «ввести часы» и сохранить данные в телефоне с указанием времени / даты и попытаться отправлять эти данные каждые 10 минут (так как телефон пытается получить прием)
Показать ещё 3 комментария
1

Я не думаю, что вы можете это сделать, но вы можете перекрестно проверить время.

Когда вы "часы в" также открываете /proc/uptime в виде текстового файла и читаете его там. Я считаю, что это за секунды. Когда вы выходите из игры, перечитайте значение и используйте разницу в качестве перекрестной проверки. Если сервер также доступен, проверьте время с сервера (или немедленно сообщите о синхронизации)

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

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

0

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

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

  • 0
    Не будите ли вы продолжать разбудить телефон ото сна и так разряжать батарею? 15 минут могут быть более разумными, 12 или 18, если у вас есть одна из тех систем хронометража, которая делит час на десятые.
  • 0
    Разработчик должен будет протестировать и настроить параметр, чтобы сделать его максимально полезным. Однако, если разрыв слишком велик, пользователь может потенциально изменить часы, «часы в», а затем повернуть часы обратно на правильное время в промежутке между 2 проверками.
Показать ещё 11 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню