Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Как надежно фиксировать время на клиенте / 22 сообщений из 22, страница 1 из 1
17.03.2010, 10:47:33
    #36525492
Как надежно фиксировать время на клиенте
Есть интернет-клиент, черзе который ведется игра между двумя людьми шашки, шахматы, нарды и т.п.
Люди ходят по очреди и надо фиксировать время сколько они думали над ходом.
Самый простой и надежный вариант это тупо фиксировать все, что ложится в базу по серверному времени. НО допустим юзер отправил свой ход на сервер и с момент отправки с клиента и пока он реально ляжет в базу может пройти достаточно времени, чтобы считать его критичным...
То есть я сходил, запрос улетел в интерент, пока он дошел до сайта, пока дождался своей очереди (если сайт хорошо нагружен) в плане обработки его серверным приложением, пока дождался очереди в плане, чтобы проапдейтить поля в базе... Реально сталкивался с такими сайтами не очень гуд имхо...
Если же привязаться к времени клиента+смещение относительно времени сервера, появляется риск того, что пользователь руками или программно может изменить время на своей машине, откатив его назад, т.о. получится, что он может думать над ходом бесконечно :) если бы это можно было как-то обойти....
...
Рейтинг: 0 / 0
17.03.2010, 11:59:57
    #36525715
Пилотажный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как надежно фиксировать время на клиенте
Часы на странице, где и игровое поле.
И вместе с ходом считывать, что показывают вне зависимости у кого где какое время выставлено.
...
Рейтинг: 0 / 0
17.03.2010, 12:02:28
    #36525730
zloy den
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как надежно фиксировать время на клиенте
Я думаю стоит смотреть информацию запроса на сервере. А когда он ляжет в базу уже несущественно. А в проверке заложите те самые пару секунд на доставку запроса с клиента до сервера. Т.е. у пользователя 30 секунд на обдумывание, а на сервере вы ему даете 33 допустим.
У вас веб-приложение?
...
Рейтинг: 0 / 0
17.03.2010, 12:05:39
    #36525739
zloy den
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как надежно фиксировать время на клиенте
ПилотажныйЧасы на странице, где и игровое поле.
И вместе с ходом считывать, что показывают вне зависимости у кого где какое время выставлено.

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

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

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

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

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

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

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

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

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


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