![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Oct 2006
Сообщений: 7
|
Есть игра на флэше, по окончании которой предлагается ввести свои данные для рейтинга, после чего они передаются методом POST PHP скрипту который уже добавляет их в БД.
Есть огромная дырка в безопасности позволяющая передать любые значения этому скрипту. Тоесть элементарно декомпилировав флэшку можно получить названия переменных которые передаются скрипту, потом наваять на HTML обычную форму с такими полями и все, рейтинг заломан ![]() Подскажите как можно этого избежать? Делать проверку в скрипте на HTTP_REFFERER неимеет смысла, так как подменить его элементарно. Что делать незнаю Может кто уже сталкивался с такой проблемой и решил ее? Заранее спасибо! |
|
|||||
|
Как вариант - можно в самом начале игры от сервера получить уникальный код (md5()), а потом всё общение с сервером осуществлять с этим кодом. Но это тоже можно поломать.
Второй вариант - если количество очков в игре будут посылаться не одним числом, а некоим массивом чисел, из которых на сервере итоговый результат будет расчитываться. Но для более осмысленного описания нужно хотя бы знать что за игра. |
|
|||||
|
Регистрация: Oct 2006
Сообщений: 7
|
Цитата:
Вся проблема в том что флэш декомпилируется и любой алгоритм по запудриванию результатов при желании можно будет вычислить. Как вариант создавать сессию флэшом, которая будет проверется скриптом на сущестование перед добавлением результатов в базу, но я незнаю может ли флэш создавать сессию (или регистрировать в ней переменные). Хотя даже такой вариант кажется можно поломать. |
|
|||||
|
Регистрация: Oct 2006
Сообщений: 7
|
Можно конечно вобще перестроить алгоритм занесения результатов в базу (без передачи времени POST-ом). Например после окончания игры флэш создает текстовый файл с каким нибудь уникальным именем, куда записывает результаты игры и переменную с именем созданного файла передает тем же POST-ом PHP скрипту который парсит его и дабавляет уже из файла результат в базу. Потом это файл стирает с сервака.
Просто проблема в том что флэшку писал не я, а сторонний разработчик и взаимодействие с ним по поводу переделывания алгоритма во флэшэ будет ооочень долгим и утомительным. Поэтому хотелось бы расмотреть вариант зашиты существующего алгоритма. |
|
|||||
|
Регистрация: Sep 2006
Сообщений: 22
|
|
|
|||||
|
Регистрация: Dec 1999
Адрес: Магадан
Сообщений: 763
|
Для такого типа игр вполне подходит такой вариант: посылать не только конечный результат, но и большую кучу дополнительной (статистической) информации, например, позволяющей воспроизвести весь процесс сбора пазла (фактически, все манипуляции мышкой). Создавая десятки и сотни килобайт дополнительных данных, делаем подделку их ОЧЕНЬ трудоёмкой. Тем более, что подделать данные качественно очень сложно (чтобы это выглядело похоже на игру человека, очень уж специфичны моменты, когда человек задумывается, а когда может играть быстро), а проверить довольно просто, глазами: написать проигрыватель (на основании сохранённых данных), который будет показывать процесс сбоки. Тем более такую проверку можно поручить остальным игрокам - и это само по себе будет довольно интересно, если они смогут посмотреть как создавался рекорд в движении. Тем более, имея такую кучу статистических данных на сервере, можно легко вычислять подозрительных игроков, просто посмотрев как изменялась результативность их игры со временем.
![]() Такой способ делает взлом самих данных проктически нереальным... Уже работает на одном из игровых серверов в нескольких игрушках. ![]()
__________________
Верить никому нельзя. Мне - можно. :) |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Проигрыватель может отсекать читеров и работать в автоматическом режиме (при желании, читеров можно проверить визуально).
Во всяком случае это избавляет от просмотра сотен игр. |
|
|||||
|
Регистрация: Dec 1999
Адрес: Магадан
Сообщений: 763
|
Ну зачем же сотен - нам есть дело только до верхушки таблицы рекордов, да и я же говорю, можно это отдать на откуп остальным претендентам, надо всегда устраивать так, чтобы сама система работала против нечестной игры
![]()
__________________
Верить никому нельзя. Мне - можно. :) |
|
|||||
|
Регистрация: Oct 2006
Сообщений: 7
|
Цитата:
Сегодня мне предложили еще один вариант. Суть состоит в использовании теории вероятности, тоесть определяется минимальное время за который игрок может собрать паззл с первого раза. И на основании этого параметра резать читеров. грубо говоря отслеживать всю историю игры каждого игрока. Если он постепенно уменьшал свой результат то скорее всего это честный игрок. Если с первого раза показывает очень маленькое время, то скорее всего читер. Но и тут есть проблема. Либой читер первый раз (а возможно и несколько раз) будет играть честно дабы понять как работает игра. Соответственно в базе его результат будет идти по убываию и он обойдет эту проверку. Насколько я понял почитав форум сделать хорошую защиту нельзя. Достичь максимального эффекта можно лишь используя все изестные наработки по защите если так можно сказать (уместнее будет говорить о запутывание читера). Честно сказать с флэшем работаю впервые и сильно удивлен уровнем защищенности SWF. В то время как все разработчики софта уделяют огромное внимание секьюрности своих проектов Macromedia уже в течении 8 версий делает флэш такими незащищенными. Будем надеяться что Adobe исправит этот недостаток. |
|
|||||
|
Негуру
администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
|
Цитата:
|
![]() |
![]() |
Часовой пояс GMT +4, время: 18:28. |
|
|
« Предыдущая тема | Следующая тема » |
|
|