powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Как надежно фиксировать время на клиенте
22 сообщений из 22, страница 1 из 1
Как надежно фиксировать время на клиенте
    #36525492
Есть интернет-клиент, черзе который ведется игра между двумя людьми шашки, шахматы, нарды и т.п.
Люди ходят по очреди и надо фиксировать время сколько они думали над ходом.
Самый простой и надежный вариант это тупо фиксировать все, что ложится в базу по серверному времени. НО допустим юзер отправил свой ход на сервер и с момент отправки с клиента и пока он реально ляжет в базу может пройти достаточно времени, чтобы считать его критичным...
То есть я сходил, запрос улетел в интерент, пока он дошел до сайта, пока дождался своей очереди (если сайт хорошо нагружен) в плане обработки его серверным приложением, пока дождался очереди в плане, чтобы проапдейтить поля в базе... Реально сталкивался с такими сайтами не очень гуд имхо...
Если же привязаться к времени клиента+смещение относительно времени сервера, появляется риск того, что пользователь руками или программно может изменить время на своей машине, откатив его назад, т.о. получится, что он может думать над ходом бесконечно :) если бы это можно было как-то обойти....
...
Рейтинг: 0 / 0
Как надежно фиксировать время на клиенте
    #36525715
Фотография Пилотажный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Часы на странице, где и игровое поле.
И вместе с ходом считывать, что показывают вне зависимости у кого где какое время выставлено.
...
Рейтинг: 0 / 0
Как надежно фиксировать время на клиенте
    #36525730
zloy den
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я думаю стоит смотреть информацию запроса на сервере. А когда он ляжет в базу уже несущественно. А в проверке заложите те самые пару секунд на доставку запроса с клиента до сервера. Т.е. у пользователя 30 секунд на обдумывание, а на сервере вы ему даете 33 допустим.
У вас веб-приложение?
...
Рейтинг: 0 / 0
Как надежно фиксировать время на клиенте
    #36525739
zloy den
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПилотажныйЧасы на странице, где и игровое поле.
И вместе с ходом считывать, что показывают вне зависимости у кого где какое время выставлено.

Подделать код страницы имхо реально(но будет ли этим кто-то заниматься?)
...
Рейтинг: 0 / 0
Как надежно фиксировать время на клиенте
    #36525761
Фотография Пилотажный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zloy denПилотажныйЧасы на странице, где и игровое поле.
И вместе с ходом считывать, что показывают вне зависимости у кого где какое время выставлено.

Подделать код страницы имхо реально(но будет ли этим кто-то заниматься?)

В applet и зашифровать.
Если не web, то тем более.
...
Рейтинг: 0 / 0
Как надежно фиксировать время на клиенте
    #36525784
Фотография Пилотажный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zloy den будет ли этим кто-то заниматься?)

Так, например, фиксация цейтнота и игра не чемпионаты конечно, но на немаленькие деньги.
...
Рейтинг: 0 / 0
Как надежно фиксировать время на клиенте
    #36525960
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кривокодовпользователь руками или программно может изменить время на своей машине, откатив его назад, т.о. получится, что он может думать над ходом бесконечно :) если бы это можно было как-то обойти....
Представьте себе, что на финишной прямой стоит целая толпа судей и у каждого в руке свой собственный секундомер и у каждого своё локальное время. А потом - судейские споры. Поэтому не стоит закладывать в задачу аномалии. Существует лишь одно время. Это время, которое фиксирует сервер.
...
Рейтинг: 0 / 0
Как надежно фиксировать время на клиенте
    #36526017
Фотография ML380
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Требуется ведь измерять время не абсолютное, а относительное? т.е. важно сколько игрок ходил. Тут логично не обращаться к часам, а подсчитывать количество тиков таймера (системного, или таймера той среды, которая исполняет приложение). Запускать таймер по началу хода, останавливать в конце - количество тиков в базу.
...
Рейтинг: 0 / 0
Как надежно фиксировать время на клиенте
    #36526044
Фотография ML380
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zloy denА в проверке заложите те самые пару секунд на доставку запроса с клиента до сервера. Т.е. у пользователя 30 секунд на обдумывание, а на сервере вы ему даете 33 допустим.
а если не 33, а 35. А если 38? Те придется пологаться на с потолка взятое "магическое число", которое может в любой момент измениться.
На время сервера можно полагаться только для грубой проверке во избежании подделки, те если от клиента пришло время 30 сек, а по времени сервера он думал 10 мин. - это явно поддела.
...
Рейтинг: 0 / 0
Как надежно фиксировать время на клиенте
    #36526292
ML380Требуется ведь измерять время не абсолютное, а относительное? т.е. важно сколько игрок ходил. Тут логично не обращаться к часам, а подсчитывать количество тиков таймера (системного, или таймера той среды, которая исполняет приложение). Запускать таймер по началу хода, останавливать в конце - количество тиков в базу.
Да! Именно это решение и вертелось где-то около головы. Спасибо за помощь в его материализацию в буквы :).

Приложение на делфи, работает с веб-сервером, на веб-сервере другое приложение, которое работает с базой ну и собственно клиентскими прогами которые на делфи :) Ну думаю, распространненная схема.

По воводу мысли ML380 , чувствую дурацкий вопрос: с тиками не работал, можно ли как-то программно менять или сбрасывать счетчик тиков? А так с тиками вариант иделаьный имхо...
...
Рейтинг: 0 / 0
Как надежно фиксировать время на клиенте
    #36526302
Спрашиваю именно о системном таймере, т.к. если включать свой таймер приложении, то есть вероятность, что кто-то сломает прогу, отключив включение таймера опять же :)
...
Рейтинг: 0 / 0
Как надежно фиксировать время на клиенте
    #36526310
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ML380Требуется ведь измерять время не абсолютное, а относительное? т.е. важно сколько игрок ходил. Тут логично не обращаться к часам, а подсчитывать количество тиков таймера (системного, или таймера той среды, которая исполняет приложение). Запускать таймер по началу хода, останавливать в конце - количество тиков в базу.
Тики или секунды. Какая принципиальная разница? Это не спасает от читерства.
...
Рейтинг: 0 / 0
Как надежно фиксировать время на клиенте
    #36526358
Продолжая по поводу мысли ML380 . Допустим ситуация юезр подумал подумал над ходом (мы считаем тики). Потом берет и вырубает прогу (НЕ ПОХОДИВ). Или банально отрубается питаение компа... То есть так, что у программы даже нет вохможности как-то сохранить кол-во тиков, которые юзер думал над ходом... Наши действия? :)
Наверно можно усложнить протокол обработки времни хода, чтобы как только наступило время хода юзера на сервер сразу отправляется запрос, что мол вот он получил и было у него такое-то значение тиков на тот момент... НО опять же юзер может, перехватывая пакеты отрубить программе эту возможность и так далее и так далее короче, похоже, что придется тупо смотреть время на сервере? :( Как сказал mayton
...
Рейтинг: 0 / 0
Как надежно фиксировать время на клиенте
    #36526363
mayton согласен
...
Рейтинг: 0 / 0
Как надежно фиксировать время на клиенте
    #36526386
Фотография ML380
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonТики или секунды. Какая принципиальная разница? Это не спасает от читерства.

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

Кривокодов Продолжая по поводу мысли ML380. Допустим ситуация юезр подумал подумал над ходом (мы считаем тики). Потом берет и вырубает прогу (НЕ ПОХОДИВ). Или банально отрубается питаение компа... То есть так, что у программы даже нет вохможности как-то сохранить кол-во тиков, которые юзер думал над ходом... Наши действия? :)
Сохранять их с определенной периодичностью в зашифрованный файл, без которого программа отказывается работать. Другое дело, что он может сделать скриншот, отрубить прогу, и думать над скриншотом, а потом быстро ходить.
...
Рейтинг: 0 / 0
Как надежно фиксировать время на клиенте
    #36526392
Фотография ML380
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторПотом берет и вырубает прогу (НЕ ПОХОДИВ). Или банально отрубается питаение компа...
В большинстве сетевых игр реального времени нельзя сохраняться.
Те игра теряется.
...
Рейтинг: 0 / 0
Как надежно фиксировать время на клиенте
    #36526394
В общем убедили. Не буду заморачиваться, хотя было бы круто сделать возможность такого контроля на уровне железа, чтобы вообще никто не мог это сломать :)
...
Рейтинг: 0 / 0
Как надежно фиксировать время на клиенте
    #36526429
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КривокодовВ общем убедили. Не буду заморачиваться, хотя было бы круто сделать возможность такого контроля на уровне железа, чтобы вообще никто не мог это сломать :)
Сломают и это. (Вспомните региональную защиту в DVD-плеерах). Самая лучшая защита - это децентрализация кода (вынос в серверную часть того что должно быть скрыто). И конечно-же формальное соглашение о честности проведения шахматных игр. Последнее впрочем не относится к алгоритмам. Это обще-правовая процедура.
...
Рейтинг: 0 / 0
Как надежно фиксировать время на клиенте
    #36526566
zloy den
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton... Самая лучшая защита - это децентрализация кода (вынос в серверную часть того что должно быть скрыто). ...

Это разве не централизация?
...
Рейтинг: 0 / 0
Как надежно фиксировать время на клиенте
    #36526569
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эээ... Ну или так.
...
Рейтинг: 0 / 0
Как надежно фиксировать время на клиенте
    #36526596
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кривокодовхотя было бы круто сделать возможность такого контроля на уровне железа, чтобы вообще никто не мог это сломать :)есть только один гарантированный способ достичь желаемого: не делать защиту вообще то чего нет, сломать невозможно
вот тут гуру о том же размышляют
...
Рейтинг: 0 / 0
Как надежно фиксировать время на клиенте
    #36526619
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egorychесть только один гарантированный способ достичь желаемого: не делать защиту вообще то чего нет, сломать невозможно
вот тут гуру о том же размышляют
Почитал. Гониво полнейшее.
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Как надежно фиксировать время на клиенте
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]