[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Защита от подмены результатов
ELked
Есть приложение ВК. Когда в него пользователь заходит - приложение добавляет его в базу, беря id пользователя из API. POST запрос на добавление отправляю через AJAX. Потом после завершения игры пользователя AJAX отправляет запрос на внесение результатов в бд.
SQL запрос выглядит так:
UPDATE users set result = :result WHERE user_id = :user_id

Как защитить от подмена данных(id пользователя и результатов) программами типа Charles и т.д?
Valick
если движок игры на клиенте, то никак
движок должен быть на сервере, и сервер полностью должен контролировать игровой процесс

_____________
Стимулятор ~yoomoney - 41001303250491
ELked
Цитата (Valick @ 25.08.2014 - 12:03)
если движок игры на клиенте, то никак
движок должен быть на сервере, и сервер полностью должен контролировать игровой процесс

Ну тут на сервере его никак не сделать
JS игра обычная. Совсем никак не защитить? Как же быть тогда?
bestxp
элементарное ты и сам можешь сделать
в ту же сессию запихнуть кто играет сейчас и сравнивать с тем какие данные приходят ( id игрока )
ELked
Цитата (bestxp @ 25.08.2014 - 12:12)
элементарное ты и сам можешь сделать
в ту же сессию запихнуть кто играет сейчас и сравнивать с тем какие данные приходят ( id игрока )

Так чтобы в сессию запихнуть надо будет ajax отправлять, потому что никак не узнать больше id пользователя, кроме как из api vk. Его и подменять. или я чего-то не понимаю user posted image
bestxp
1 ты должен каким то запросом указать текущего пользователя
2 потом что угодно пусть делают если не совпадает id заданный в 1 c полученным идут в лет


если на пути в 1 подменили id то и записан у тебя другой id следовательно остальные действия у тебя не будут делаться с нормальным id так как по сути обращается другой игрок

и приложение не должно начинать работать пока п/1 не отработает полностью

что тут не понятного то
Valick
bestxp, речь не о подмене id, а о подмене результата.
Я например даже не играя в игу могу выигрывать со 100% результатом smile.gif



_____________
Стимулятор ~yoomoney - 41001303250491
vagrand
ELked
Если вся игровая логика на стороне клиента, то на 100% никак не защитите. Можно защититься только от полных ламеров. например при старте игры генерировать на сервере какой-то пароль и на его основе шифровать результат на клиенте и уже в шифрованном виде отправлять на сервер.
Как вариант еще можно подписывать таким паролем запросы, т.е. генерить на каждый запрос некий хеш, который потом сравнивать на серверной стороне. Как пример вот есть реализация md5() функции на JS: http://vispyanskiy.name/ru/kak-sgenerirova...sh-v-javascript

Но опять же, это сработает только против самого ламерного ламера.


_____________
Senior PHP developer: PHP5, MySQL, JavaScript, CakePHP, Yii/Yii2, Zend Framework, Smarty, XML/Xslt, JQuery, Jquery Mobile, Bootstrap, ExtJS, HTML, HTML5, CSS, Linux, SVN, Git, Memcached, Redis, MongoDB, Zend Guard, Ioncube, FFMpeg, PayPal, Webmoney, Qiwi, Facebook API, Vkontakte Api, Google API, Twitter Api, Steam Api.
Junior Android Developer: Android SDK, многопоточность, работа с HTTP запросами, JSON, SQLite, фрагменты.
bestxp
Цитата (Valick @ 25.08.2014 - 13:15)
bestxp, речь не о подмене id, а о подмене результата.
Я например даже не играя в игу могу выигрывать со 100% результатом smile.gif

Да хоть миллион раз пусть выигрывает на клиенте, если сервер все проверяет не важно что будет выведено, вон раньше и с памятью игрались) вспомните мега штуку как ArtMoney

так что только на сервере проверки расчетов условий победы и вывод на экран
Valick
Цитата
так что только на сервере проверки расчетов условий победы и вывод на экран

так об этом и речь, на сервере таких проверок просто нет и не могут взяться они там, так как вся игра на чистом JS

_____________
Стимулятор ~yoomoney - 41001303250491
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.