Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Общие вопросы о Flash (не затрагивающие ActionScript) (http://www.flasher.ru/forum/forumdisplay.php?f=60)
-   -   Безопасность передачи переменных скрипту PHP (http://www.flasher.ru/forum/showthread.php?t=86484)

pdvision 16.10.2006 19:08

Безопасность передачи переменных скрипту PHP
 
Есть игра на флэше, по окончании которой предлагается ввести свои данные для рейтинга, после чего они передаются методом POST PHP скрипту который уже добавляет их в БД.

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

Подскажите как можно этого избежать?
Делать проверку в скрипте на HTTP_REFFERER неимеет смысла, так как подменить его элементарно.

Что делать незнаю :wacko:

Может кто уже сталкивался с такой проблемой и решил ее?
Заранее спасибо!

FourSide 16.10.2006 19:45

Как вариант - можно в самом начале игры от сервера получить уникальный код (md5()), а потом всё общение с сервером осуществлять с этим кодом. Но это тоже можно поломать.

Второй вариант - если количество очков в игре будут посылаться не одним числом, а некоим массивом чисел, из которых на сервере итоговый результат будет расчитываться. Но для более осмысленного описания нужно хотя бы знать что за игра.

pdvision 16.10.2006 21:08

Цитата:

Сообщение от FourSide
Но для более осмысленного описания нужно хотя бы знать что за игра.

Игра паззл, основной параметр на котором строится рейтинг - время за которое он собран.

Вся проблема в том что флэш декомпилируется и любой алгоритм по запудриванию результатов при желании можно будет вычислить.

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

pdvision 16.10.2006 21:16

Можно конечно вобще перестроить алгоритм занесения результатов в базу (без передачи времени POST-ом). Например после окончания игры флэш создает текстовый файл с каким нибудь уникальным именем, куда записывает результаты игры и переменную с именем созданного файла передает тем же POST-ом PHP скрипту который парсит его и дабавляет уже из файла результат в базу. Потом это файл стирает с сервака.

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

Поэтому хотелось бы расмотреть вариант зашиты существующего алгоритма.

Курильский 17.10.2006 13:04

http://www.flasher.ru/forum/showthread.php?t=70931

Dendroid 17.10.2006 19:00

Для такого типа игр вполне подходит такой вариант: посылать не только конечный результат, но и большую кучу дополнительной (статистической) информации, например, позволяющей воспроизвести весь процесс сбора пазла (фактически, все манипуляции мышкой). Создавая десятки и сотни килобайт дополнительных данных, делаем подделку их ОЧЕНЬ трудоёмкой. Тем более, что подделать данные качественно очень сложно (чтобы это выглядело похоже на игру человека, очень уж специфичны моменты, когда человек задумывается, а когда может играть быстро), а проверить довольно просто, глазами: написать проигрыватель (на основании сохранённых данных), который будет показывать процесс сбоки. Тем более такую проверку можно поручить остальным игрокам - и это само по себе будет довольно интересно, если они смогут посмотреть как создавался рекорд в движении. Тем более, имея такую кучу статистических данных на сервере, можно легко вычислять подозрительных игроков, просто посмотрев как изменялась результативность их игры со временем. :)
Такой способ делает взлом самих данных проктически нереальным... Уже работает на одном из игровых серверов в нескольких игрушках. ;)

etc 17.10.2006 19:09

Проигрыватель может отсекать читеров и работать в автоматическом режиме (при желании, читеров можно проверить визуально).
Во всяком случае это избавляет от просмотра сотен игр.

Dendroid 17.10.2006 19:13

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

pdvision 17.10.2006 21:17

Цитата:

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

Такой вариант тоже расматривался. Но в моем случае затраты на его исполнение будут неоправданы (я говорю про разработку проигрывателя) так как игра нужна всего в течении нескольких месяцев. Конечно можно отсылать кучу статистики скрипту и потом вылавливать в ней несоответствия, но в любом случае гарантий от взлома никаких нет. Это лишь очередное препятствие для читера.

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

Но и тут есть проблема. Либой читер первый раз (а возможно и несколько раз) будет играть честно дабы понять как работает игра. Соответственно в базе его результат будет идти по убываию и он обойдет эту проверку.

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

Честно сказать с флэшем работаю впервые и сильно удивлен уровнем защищенности SWF. В то время как все разработчики софта уделяют огромное внимание секьюрности своих проектов Macromedia уже в течении 8 версий делает флэш такими незащищенными. Будем надеяться что Adobe исправит этот недостаток.

iNils 17.10.2006 21:22

Цитата:

Сообщение от pdvision
Честно сказать с флэшем работаю впервые и сильно удивлен уровнем защищенности SWF. В то время как все разработчики софта уделяют огромное внимание секьюрности своих проектов Macromedia уже в течении 8 версий делает флэш такими незащищенными. Будем надеяться что Adobe исправит этот недостаток.

SWF открытый формат.


Часовой пояс GMT +4, время: 13:11.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.