Защита от перевода времени

Зачем нужна защита?

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

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

Пример.

Клиент взял кредит 10 мая на 10 дней, допустил просрочку и пришел погасить его только 25 мая. Оператор переводит дату на 20 мая и производит выкуп имущества. Таким образом, по базе получается, что клиент погасил кредит вовремя, а проценты за 5 дней просрочки оператор забирает себе.
Если разрешен досрочный выкуп, то переводя часы назад, оператор может забирать себе не только проценты на гарантийном сроке, но и проценты и на основном сроке.

Как PawnShop следит за часами

Перевести часы назад в PawnShop невозможно: во время работы программы перевод времени назад обнаруживается сразу же:

Теперь, пока оператор не установит правильное время, никакие операции не могут быть произведены. При повторных запусках программа также не позволит работать, пока системное время остается переведенным назад.

Проверка перевода времени назад осуществляется так: дата последней операции сравнивается с текущей датой на компьютере. Если дата на компьютере оказывается меньше, значит, часы были переведены назад.

Также программа отслеживает перевод часов вперед. Прямо во время работы:

… и при запуске:

Данное предупреждение появляется для того, чтобы оператор случайно не выполнил операцию будущим числом.