Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Серверные технологии и Flash (http://www.flasher.ru/forum/forumdisplay.php?f=62)
-   -   Доступ к Php скриптам только из swf (http://www.flasher.ru/forum/showthread.php?t=177555)

sstotenkopf 03.04.2012 04:28

Доступ к Php скриптам только из swf
 
Всем привет! Появилась задача: воспрепятствовать обращению злоумышленника к пхп скриптам напрямую, чтобы они запускались только из swf, такое возможно?

kackbip 03.04.2012 09:22

Нет, невозможно. Тем более, что обращается к php не swf, а браузер.

Zebestov 03.04.2012 10:21

Пресечь обращение "не из swf" невозможно. Но сделать защиту "от дурака", при которой вызов скрипта будет узнавать нужный запрос, можно. Создаем строку запроса к серверу, добавляем к ней ключик, который заложен в swf, создаем MD5 хеш полученной строки, добавляем его к исходному запросу и отсылаем скрипту. Скрипт первым делом воссоздает все эти же действия с тем же ключом и проверяет MD5 хеши: полученный и воссозданный. Если не совпадают — злоумышленник. Если совпадают — твоя swf... или трудолюбивый злоумышленник с декомпилятором.

DaFive 03.04.2012 13:24

Плюс сделать, чтобы обращались только с определенного домена, в htaccess.

Genzo 03.04.2012 13:29

Цитата:

Плюс сделать, чтобы обращались только с определенного домена, в htaccess.
Флешка запускается не на домене, а на клиенте.

sstotenkopf 03.04.2012 23:16

Цитата:

Сообщение от Zebestov (Сообщение 1072739)
Пресечь обращение "не из swf" невозможно. Но сделать защиту "от дурака", при которой вызов скрипта будет узнавать нужный запрос, можно. Создаем строку запроса к серверу, добавляем к ней ключик, который заложен в swf, создаем MD5 хеш полученной строки, добавляем его к исходному запросу и отсылаем скрипту. Скрипт первым делом воссоздает все эти же действия с тем же ключом и проверяет MD5 хеши: полученный и воссозданный. Если не совпадают — злоумышленник. Если совпадают — твоя swf... или трудолюбивый злоумышленник с декомпилятором.

В том то и дело, что любой дурак может декомпилировать и посмотреть способ формирования ключика, без декомпиляции человек в принципе и так не узнает адрес скрипта и какие переменные туда постить... Как то же защищают люди свои приложения... только вот как...

Добавлено через 2 минуты
Цитата:

Сообщение от kackbip (Сообщение 1072735)
Нет, невозможно. Тем более, что обращается к php не swf, а браузер.

Если уж на то пошло обращается флеш плагин) Можно приложение так же открыть через флеш плеер и без проблем обратиться)

Zebestov 03.04.2012 23:51

Цитата:

Сообщение от sstotenkopf (Сообщение 1072912)
...без декомпиляции человек в принципе и так не узнает адрес скрипта и какие переменные туда постить

Приехали. Спроси у гугла про "sniffer".

sstotenkopf 04.04.2012 00:01

Цитата:

Сообщение от Zebestov (Сообщение 1072921)
Приехали. Спроси у гугла про "sniffer".

Ступил) А он покажет названия переменных? Вообщем пришел к выводу, что лучше пойти другим путем, сейчас буду продумывать концепцию)

Astraport 04.04.2012 00:07

Цитата:

Флешка запускается не на домене, а на клиенте.
Ну все правильно он сказал - флэшка проверяет с какого домена идут запросы. Это хорошая вещь для улучшения безопасности.

kackbip 04.04.2012 09:23

Цитата:

Сообщение от sstotenkopf (Сообщение 1072912)
Если уж на то пошло обращается флеш плагин) Можно приложение так же открыть через флеш плеер и без проблем обратиться)

Если коротко то - нет.
А если намекнуть то - "Так плагин или плеер?" ;)

Dukobpa3 04.04.2012 13:35

Цитата:

А он покажет названия переменных?
В хроме ф12 и потыркай что он там показывает что не показывает, удивишься.

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

Zebestov 04.04.2012 14:07

Цитата:

Сообщение от Dukobpa3 (Сообщение 1072998)
к тому же ключик в мд5 не спасет и от сниффера, мне как бы не нужно знать сам ключ, мне достаточно знать этот самый мд5, который я спокойненько из сниффера смогу получить и прикрутить к своему запросу.

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

Dukobpa3 04.04.2012 14:15

Ну мало ли.
Пополнил баланс приложения на 1 голос и сто раз повторил запрос, в чем проблема то.

Короче было бы желание, а как заюзать я найду.

Zebestov 04.04.2012 14:19

Баланс не клиентским запросом пополняется, а через проверки, которые идут мимо клиента, — тебе ли это не знать! Что же ты вводишь начинающих разработчиков в заблуждение :)

Dukobpa3 04.04.2012 14:47

Ну как пример.
Игровое бабло то внутри проверяется, намучу я себе стопицот монет таким вот образом.

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

У нас вообще сделано мол клиент шлет команду - начислить с такой то доходной постройки - а там уже сервер смотрит чего и сколько. Т.е. клинент во-первых с одной постройки дважды не начислит - его сервер пошлет, а во вторых цыфру клиент не знает пока ему баланс сервером не пополнится. Вернее знает как бы предварительно, но это только визуально для игрока, на балансе этой цифры нету.

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

sstotenkopf 04.04.2012 15:51

Цитата:

Сообщение от Zebestov (Сообщение 1073009)
Баланс не клиентским запросом пополняется, а через проверки, которые идут мимо клиента, — тебе ли это не знать! Что же ты вводишь начинающих разработчиков в заблуждение :)

Я в курсе этого) Вообще я боялся лишь за накрутку рейтинга, который влияет на топы. Сделал поправку в php, если переменная запрашивает повышение рейтинга кому либо, то должны передаваться доп. переменные id игроков, и id комнаты, скрипт проверяет в б.д. наличие этих игроков в этой комнате, если они присутствуют значит повышение рейтинга возможно, если кого то нет значит левак, думаю от новичков спасет)

Zebestov 04.04.2012 16:07

Работа с рейтингом вообще больное место в игре. В идеале проверять на сервере практическую возможность темпа и/или последовательности начисления очков. В случае, если темп очевидно завышен и/или последовательность очков не соответствует геймплею, принимать решение. Проще всего просто блокировать сильно уж неправдоподобный рост очков и заносить id игрока в списочек.

Dukobpa3 04.04.2012 16:11

Я что такое рейтинг? Для него нужна отдельная цифра? Я за расчет рейтинга из нескольких составляющих.
Вот есть у меня колво сыгранных игр, есть колво очков заработанных, ну я там на сервере их как-то считаю и сортирую игроков.

Genzo 04.04.2012 16:17

А не проще давать возможность одному игроку поднимать рейтинг другому, только один раз.
incRating(player1_id , player2_id , rate) и хранить в базе, при попытке добавить рейтинг проверять

sstotenkopf 04.04.2012 16:59

Цитата:

Сообщение от Genzo (Сообщение 1073040)
А не проще давать возможность одному игроку поднимать рейтинг другому, только один раз.
incRating(player1_id , player2_id , rate) и хранить в базе, при попытке добавить рейтинг проверять

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

Genzo 04.04.2012 17:09

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

Dukobpa3 04.04.2012 17:13

Я че-то все-равно не въехал.
Можно на пальцах как ваш рейтинг считается и что это вообще такое в вашей игре?

Просто я считаю что вот так вот втупую скриптом рейтинг пополнять как-то хз. Оно изначально не так происходить должно.


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

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