|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
06.04.2013, 11:24 | #1 |
Форумчанин
Регистрация: 21.02.2009
Сообщений: 372
|
Игра. AJAX -> PHP защита данных при передаче
Здраствуйте, друзья.
Пишу небольшую игру (браузерную) на Canvas. И возник такой вопрос. У меня есть поле, на котором расположены объекты. При взоимодействии этих объектов (например, при их столкновении, графически) запускается функция, которая генерирует рандомное число в диапазоне от A до B и отсылает его серверной части (PHP скрипту) при помощи AJAX. Далее PHP скрипт обрабатывает полученое значение и производит определенные действия (например, запись каких-либо данных в базу). Проблема заключается в том, что запрос к PHP скрипту при желании, возможно эмулировать. То есть злоумышленник теоретически может самостоятельно отослать данные PHP скрипту и он (скрипт) будет их обрабатывать. Задача следующая. Мне необходимо сделать так, чтобы PHP скрипт обрабатывал только те данные, которые формируют функции клиента (клиентской части игры, js). При попытке отправки данных скрипту вручную он не должен производить никаких действий. Вопрос. Как отличить данные, отправленные PHP скрипту злоумышленником вручную от данных, сформированных на клиентской части игры? Или, может есть другой способ защиты? Шифрование передаваемых данных? Если так, то нужен надежный алгоритм, который будет не сильно влиять на производительность (ибо Canvas, как вы понимаете сам по себе скоростью работы не блещет ). Но опять же, шифрование данных на клиенте - звучит сомнительно. Ибо все, что находится в клиентской части - доступно для изучения злоумышленнику. Следовательно, он будет видеть алгоритм шифрования. Вообщем, я с таким заданием сталкиваюсь впервые. Наверняка, должно быть какое-то простое решение. Подскажите, в каком направлении двигаться.
No name. Just Linel.
Последний раз редактировалось Linel; 06.04.2013 в 11:26. |
06.04.2013, 13:12 | #2 |
Очень суровый
Участник клуба
Регистрация: 17.12.2009
Сообщений: 1,988
|
Главное правило любого веб-разработчика - не доверять клиентской стороне.
Проверяйте на сервере правильность данных в запросе и только.
Ненавижу быть как все, но люблю, чтобы все были как я.
|
06.04.2013, 13:54 | #3 | |
Форумчанин
Регистрация: 21.02.2009
Сообщений: 372
|
Цитата:
Скажем, JS-функция по задумке должна генерировать число от 1 до 1000. По игре, если это число равно 1, то игроку крайне не повезло, а если 1000 - то сегодня явно его день. Частота запуска такой функции зависит от очень многих игровых моментов. Она может отсылать новые числа скрипту раз в секунду, а может и раз в минуту (то есть по времени проверку делать не удастся). Скажем, скрипту приходят запросы с числами: 1000, 1000 и 1000 в течении 3 секунд. Как я могу сделать проверку на то, что это игровая клиентская часть отсылает данные или же это пользователь своими рученками пытается сжульничать?
No name. Just Linel.
|
|
06.04.2013, 14:46 | #4 | |
Очень суровый
Участник клуба
Регистрация: 17.12.2009
Сообщений: 1,988
|
Цитата:
Ненавижу быть как все, но люблю, чтобы все были как я.
|
|
06.04.2013, 18:57 | #5 | |
Форумчанин
Регистрация: 21.02.2009
Сообщений: 372
|
Цитата:
Правильно ли я понимаю, что единственный способ решения моей проблемы - это перенос всей логики игры в серверную часть? Например, переход на общение клиента с сервером через сокеты?
No name. Just Linel.
|
|
06.04.2013, 19:13 | #6 |
Подтвердите свой е-майл
Регистрация: 29.08.2012
Сообщений: 4,011
|
ну и кто помешает эмулировать с сокетами?
|
06.04.2013, 20:32 | #7 | |
Форумчанин
Регистрация: 21.02.2009
Сообщений: 372
|
Цитата:
Клиент лишь отсылает серверу такие данные, как: координаты, информацию о том, что была нажата какая-либа кнопка и так далее. Злоумышленник хочет отослать серверу координаты путем эмуляции сокетов вместо того, чтобы кликнуть мышкой на "карте"? Да ради бога. Пускай, если очень хочется. Но только зачем?
No name. Just Linel.
|
|
07.04.2013, 10:31 | #8 |
Подтвердите свой е-майл
Регистрация: 29.08.2012
Сообщений: 4,011
|
а я откуда знаю зачем..
это вы сокеты приплели,а я лишь только сказал, что это не препятствие |
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Условие при передаче данных серверу | DEA7H | C# (си шарп) | 0 | 04.01.2013 21:52 |
Ошибка в программе [Delphi 7] при передаче данных - "socket error" | -Jack- | Работа с сетью в Delphi | 7 | 18.07.2012 07:29 |
Ошибка при передаче по ссылке | N-Cat | Помощь студентам | 4 | 10.05.2011 01:24 |
Ошибка в передаче данных | Krasi | PHP | 3 | 01.05.2011 17:15 |
При передаче данных с накопителя на комп или наоборот комп перезагружается? | СисТемникс | Компьютерное железо | 3 | 15.06.2010 15:21 |