Страница 1 из 1

Защита приложения от перехвата данных

Добавлено: 23 янв 2013, 21:12
benzema
Всерьёз задумался о защите приложения от школо-хакеров, серьёзных ребят не беру в рассчёт, они если задумают взломать-то у них это получится. Существует такая тема, как перехват трафика приложения (самый банальный пример программы, с помощью которой можно перехватить трафик - HttpWatch). Вопрос: какие данные не следует передавать к php-скрипту с помощью POST-метода? или всё-таки можно передавать любые данные, ведь логин и пасс для подключения к бд находятся в самом php-скрипте? Ясно дело, что нельзя передавать никаких паролей.

Re: Защита приложения от перехвата данных

Добавлено: 23 янв 2013, 21:53
gpv123
https, не?

Re: Защита приложения от перехвата данных

Добавлено: 23 янв 2013, 22:12
benzema
gpv123, не совсем понял, что вы хотели мне сказать.

Re: Защита приложения от перехвата данных

Добавлено: 23 янв 2013, 22:28
alexei
Перехват можно только при неграмотно настроенной сетки или в публичном Wi Fi.

При перехвате пострадает лишь игрок, который был не осторожен.

А поможет лишь протокол https, вместо http.

Re: Защита приложения от перехвата данных

Добавлено: 24 янв 2013, 08:35
benzema
alexei, спасибо, теперь стало всё понятно.

Re: Защита приложения от перехвата данных

Добавлено: 24 янв 2013, 09:04
benzema
Дело то в том, что мне интересно как можно прикрыть php скрипт? раньше я использовал такую детскую схему, над всем кодом скрипта я ставил большой
if, в котором проверялось password==''какой-то пароль', а значение в password передавалось из приложения. Но даже HttpWatch мне рассказал какие я переменные передаю и их значения. Поэтому важность этой проверки пароль практически сводится на нет и любой человек может получиться доступ к моей бд через php скрипт.

Re: Защита приложения от перехвата данных

Добавлено: 24 янв 2013, 11:42
Serge
benzema писал(а):Дело то в том, что мне интересно как можно прикрыть php скрипт? раньше я использовал такую детскую схему, над всем кодом скрипта я ставил большой
if, в котором проверялось password==''какой-то пароль', а значение в password передавалось из приложения. Но даже HttpWatch мне рассказал какие я переменные передаю и их значения. Поэтому важность этой проверки пароль практически сводится на нет и любой человек может получиться доступ к моей бд через php скрипт.
Содержимое php скрипта не видно пользователю.
По-этому, если передавать только важные параметры (а точнее, передавать что сделал пользователь) - то никакого вскрытия не будет.
Ну и если рассмотреть пример покупки чего либо за игровую валюту - наличие нужного количества валюты надо смотреть и на сервере тоже (вернее, можно только на нем, но я считаю такой вариант не очень хорошим, это порождает запрос на сервер даже если нет возможности покупки).

Re: Защита приложения от перехвата данных

Добавлено: 24 янв 2013, 16:09
benzema
Но допустим если мы перехватили, при покупке за игровую валюту такие данные:

action: "buyCat" - покупаем кота
uid: 2131231 - id пользователя
password: 1232131 - ключ доступа к выполнению php скрипта(если данные так перехватываются просто, то он и не нужен в простом виде, но если его зашифровать... Про шифрование я сказал так облачно, потому что честно не сталкивался с шифрованием и не пользовался им вобще md5 и тп. Кстате я простукивал другие приложения, там как раз так и этот ключ к скрипту зашифрован)

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

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


Объясните мне всё же:
1.Как можно скрыть или зашифровать передачу password ? (gpv123 проснитесь, вы что то начинали говорить про https, а я понимаю что это такое, только не знаю куда прикрутить и с чего начать)
2.Возможно я вобще неправильно работаю с сервером.
Я отправляю запросы к серверу такие:
action: "что делать"
uid: ид пользователя в вк
password: ключ к работе php скрипта.

Re: Защита приложения от перехвата данных

Добавлено: 24 янв 2013, 16:34
Alazaur
benzema, не нужно ничего шифровать и добавлять пароль.
Привожу пример покупки товара:
Клиент посылает на сервер данные:

Код: Выделить всё

action: "by"; //действие совершаемое пользователем, предполагаю что "by" сервер воспринимает как покупка товараitemid: 1; //id покупаемого товараviewer_id: 12345; //id пользователяauth_key: 45kj45jkjh45u45; //auth_key вконтакте//можно добавить еще hash: md5 от конкатенации передаваемых данных. (необязателен, но можно использовать как "защиту от домохозяйки")
Сервер по auth_key удостоверяется, что это именно тот пользователь который пришел в viewer_id. Делает запрос в базу, запрашивая данные о товаре itemid. Делает запрос в базу за данными пользователя viewer_id. Проверяет что все нормально (достаточно денег, подходящий уровень, хватает репутации или какие-то еще ваши ограничения на покупку товаров). Если все ок, то покупает товар, если что-то не проходит возвращает ошибку.
В случае покупки игровой валюты за голоса, там вообще сервер вконтакте общается с вашим напрямую, эти запросы пользователь никак перехватить не может.

Re: Защита приложения от перехвата данных

Добавлено: 24 янв 2013, 16:42
benzema
Alazaur, теперь всё стало понятно, спасибо. Пожал бы руку вам!