![]() |
|
||||||||||
|
|||||
|
[+3 31.07.08]
Регистрация: Jan 2006
Сообщений: 150
|
Здравствуйте.
Хочу сейчас затронуть теоретическую тему по поводу безопасной передачи переменных из флеша в пхп. Делаю игру, и, после каждой последующей минуты передается информация про текущее состояние счета игрока. Игра идет на кредиты, которые игрок должен набирать понемножку. Знакомый программист говорит, что можно очень легко перехватить переменные и выслать скрипту новые данные (например, сразу 1000 кредитов). Скажите, пожалуйста, какие есть способы сохранности и приватности пересылаемых данных, чтобы их нельзя было перехватить? Спасибо. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Перехватить можно все. Поэтому надо сделать так, чтобы перехватывать нечего было.
Такие вещи, как инкрементация кредитов должны происходить на стороне сервера, а не клиента. Все действия, которые делает юзер, должны отсылаться на сервер, где будет просчитана соответствующая логика. |
|
|||||
|
[+3 31.07.08]
Регистрация: Jan 2006
Сообщений: 150
|
Но, например, эти самые действия можно посылать и не флешем?
Суть игры такова - двигаются вагонетки с золотом и камнем. Если юзер вытаскает золото, к общей сумме инкрементируется стоимость вытащенного золота (http://cs.if.ua/game). Если, допустим, отсылать запрос на сервер, что юзер только что взял золото, то этот же запрос можно также подделать? Как же быть? Спасибо. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Отправлять на сервер «юзер ткнул по такой-то вагонетке». А уж вытащил или нет — решает сервер, а не клиент.
|
|
|||||
|
Регистрация: Aug 2007
Сообщений: 467
|
Флеш-клиент только показывает юзеру то, что происходит на сервере + отсылает серверу комманды юзера! На сервере нужно проверять комманды прийнятые от клиента на корректность, так как можно и без клиента отправить серверу комманды не допустимые в данный момент или вообще! Короче и т.д. и т.п.
![]() |
|
|||||
|
[+3 31.07.08]
Регистрация: Jan 2006
Сообщений: 150
|
Спасибо ребята за месседжы. Будем выходить таким способом -
В базе создадим еще одно поле с циферками. Оно будет служить для защиты от вызовов метода для добавление новых значений золота в базу. Суть - как только пользователь загружает игру, в хмл пхп передаст ему секретное значение набора цифр, и, в базу запишет тоже число. Как только пользователь начинает тащить золото, скрипту пересылается количество вытаскиваемого золота вместе с этим и секретная переменная. пхп проверяет, одинаковое ли значение принятой переменной от флеша и та, что есть в базе. Если совпадает, делается запись и генерируется новое число, записывается в базу и передается опять во флеш. |
|
|||||
|
[+3 31.07.08]
Регистрация: Jan 2006
Сообщений: 150
|
А как-же он будет знать это число? Как мне программер сказал, перехватывать можно только передачу параметров. Юзверь сможет получить число уже то, что будет неактуально, так как когда оно поступит в скрипт, пхп сверяет его с тем, что было до этого, записывает данные в базу по золоту и генерирует новое число. Оно записывается в базу и генерируется в хмл. Флеш получает новое число и, когда юзверь хватает камешек, опять высылается инфа с новым секретным числом и так до бесконечия, пока игра не надоест нашему хакеру.
|
|
|||||
|
[+3 31.07.08]
Регистрация: Jan 2006
Сообщений: 150
|
Видимо, не забыл, а просто не сказал.
Стремная игрушка а сколько мороки..... Как вы посоветуете реализовать этот механизм? Даже не имею представления, как можно защитить базу от злых геймеров. |
![]() |
![]() |
Часовой пояс GMT +4, время: 22:54. |
|
|
« Предыдущая тема | Следующая тема » |
|
|