PHP & Action Script 3.0 - проверка получаемых значений

Уроки по PHP, Javascript и т.п.

PHP & Action Script 3.0 - проверка получаемых значений

Сообщение Sasho'OK 515 » 06 июн 2011, 14:01

В данном уроке я расскажу вам о том как можно защитить данные от взлома через Charles.
Это мой первый урок так что если что-то не так не надо меня пинать :)

Что будет использоваться :
1) Action Script 3
2) PHP
3) знания в JSON

Общая логика :
Когда данные подменяются через Charles меняется и их хэш.
Если в получаемые данные добавить поле 'hash' то можно частично защитить их.

Пример реализации :
  1.  
  2. <?
  3. $money = '5900';
  4. $level = '5';
  5. $police = '9';
  6. $opit = '7200';
  7.  
  8. $arr = array('response'=>array(
  9.                 array('money'=>$money),
  10.                 array('level'=>$level),
  11.                 array('police'=>$police),
  12.                 array('opit'=>$opit),
  13.                 array('hash'=>md5($money.'_'.$level.'_'.$police.'_'.$opit))
  14.                 ));
  15. echo json_encode($arr);
  16. ?>
  17.  

Данный скрипт выводит данные в JSON.
Поле hash формируется по формуле :
  1.  
  2. hash = md5(информация1 + "_" + информация2)
  3.  

Суть защиты :
При смене значений хэш не будет соответствовать данным!
Главное :
Не забывайте проверять хэш в клиенте по формуле!

В завершение :
Ответ от сервера в Action Script 3 будет таким :
  1. {"response":[{"money":"5900"},{"level":"5"},{"police":"9"},{"opit":"7200"},{"hash":"4ac3c6deffa5ea6fb417129cfc8b02c7"}]}

__________________________________________________________________________________________
Если есть грамматические ошибки, пишите их в комментариях т.к. я писал в спешке этот урок :D

За это сообщение автора Sasho'OK 515 поблагодарили - 2:
garymar, 112
Sasho'OK 515

 
Автор темы
Сообщения: 36
Зарегистрирован: 27 мар 2011, 14:03
Благодарил (а): 1 раз.
Поблагодарили: 2 раз.

Чтобы убрать блок с рекламой, зарегистрируйтесь на форуме или войдите.

Google
 



Re: PHP & Action Script 3.0 - проверка получаемых значений

Сообщение garymar » 18 авг 2011, 15:53

Я бы в MD5 добавил auth_key который во флешке не видно и берется из флешварза, тогда надежнее можно защитить подделку данных:

  1. $auth_key= md5($app_id."_".$viewer_id."_".$api_secret);
  2.  
  3. $money = '5900';
  4. $level = '5';
  5. $police = '9';
  6. $opit = '7200';
  7.  
  8. $arr = array('response'=>array(
  9.                 array('money'=>$money),
  10.                 array('level'=>$level),
  11.                 array('police'=>$police),
  12.                 array('opit'=>$opit),
  13.                 array('hash'=>md5($money.'_'.$level.'_'.$police.'_'.$opit.'_'.$auth_key))
  14.                 ));
  15. echo json_encode($arr);

:)
garymar

 
Сообщения: 30
Зарегистрирован: 26 авг 2010, 14:57
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.

Re: PHP & Action Script 3.0 - проверка получаемых значений

Сообщение $Sasha$ » 21 авг 2011, 11:20

а можно ещё и через sha1 шифровать :D
Для Action Script'a нужна библиотека
$Sasha$

 
Сообщения: 47
Зарегистрирован: 06 авг 2011, 20:07
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Re: PHP & Action Script 3.0 - проверка получаемых значений

Сообщение gaponj88 » 25 янв 2012, 08:20

Я из этого урока серверную часть понял ,а вот не понял как в клиенте(флеше)сверить?Делаю так:

сервер:
  1. $arr = array(array('scores'=>$user_data['scores']),
  2. array('hash'=>md5($user_data['scores'].'_'.$auth_key))
  3. );
  4. echo json_encode($arr);
  5. ответ:[{"scores":"153"},{"hash":"d27b8196682f02ba4df5b7c04d4639c4"}]


флеш:
  1. var hash2 = ( json_datazxc[0].scores + LoaderInfo(root.loaderInfo).parameters.auth_key );
  2. if(json_datazxc[0].hash == hash2){
  3. и пошел код.....

ничего не выходит
Аватара пользователя
gaponj88

 
Сообщения: 433
Зарегистрирован: 21 окт 2011, 12:26
Благодарил (а): 20 раз.
Поблагодарили: 26 раз.

Re: PHP & Action Script 3.0 - проверка получаемых значений

Сообщение gaponj88 » 25 янв 2012, 09:09

  1. var json_datazxc:Array=JSON.decode(loaderzxc.data);
  2.     var hash2 = LoaderInfo(root.loaderInfo).parameters.auth_key
  3.     var hash3 = MD5(json_datazxc[0].scores + "_" + hash2);
  4.     if(json_datazxc[0].hash == hash3){

так тоже
Аватара пользователя
gaponj88

 
Сообщения: 433
Зарегистрирован: 21 окт 2011, 12:26
Благодарил (а): 20 раз.
Поблагодарили: 26 раз.

Re: PHP & Action Script 3.0 - проверка получаемых значений

Сообщение gpv123 » 05 мар 2012, 18:04

Добавьте в хеш текущее время, чтобы нельзя было продублировать запрос.
Но нужно будет учесть время, за которое могут передаваться данные.
Также на сервере нужно хранить последнее время запроса, чтобы не было дубликата запроса за учитываемое время передачи данных.
gpv123

 
Сообщения: 346
Зарегистрирован: 29 янв 2012, 20:57
Благодарил (а): 17 раз.
Поблагодарили: 73 раз.

Re: PHP & Action Script 3.0 - проверка получаемых значений

Сообщение gpv123 » 06 мар 2012, 19:07

gaponj88, если не ошибаюсь, MD5.hash
gpv123

 
Сообщения: 346
Зарегистрирован: 29 янв 2012, 20:57
Благодарил (а): 17 раз.
Поблагодарили: 73 раз.

Re: PHP & Action Script 3.0 - проверка получаемых значений

Сообщение Kurutah » 02 май 2012, 23:53

Я из этого урока серверную часть понял ,а вот не понял как в клиенте(флеше)сверить?
Присоединяюсь к вопросу... Может кто-нибудь пример с обеими частями показать? Был бы признателен...
Также интересно, как это в обратную сторону работает (с клиента на сервер).
Kurutah

 
Сообщения: 42
Зарегистрирован: 09 ноя 2011, 12:40
Благодарил (а): 17 раз.
Поблагодарили: 2 раз.

Re: PHP & Action Script 3.0 - проверка получаемых значений

Сообщение Kurutah » 02 июн 2012, 09:47

С предыдущим разобрался, но вот вопрос, если данные через xml передаются, защищать от charles аналогично нужно?
Kurutah

 
Сообщения: 42
Зарегистрирован: 09 ноя 2011, 12:40
Благодарил (а): 17 раз.
Поблагодарили: 2 раз.

Re: PHP & Action Script 3.0 - проверка получаемых значений

Сообщение Alazaur » 02 июн 2012, 11:32

Kurutah, без разницы какой метод передачи, все аналогично. Но заметьте метод защищает только передаваемые значения, проверку нужно все равно делать, особенно при передаче данных от клиента серверу, поскольку пользователю ничего не стоит послать такой же запрос с теми же значениями и с тем же хешем еще 10 раз и получить таким образом например опыта в 10 раз больше)
Alazaur
Разработчик
Разработчик
 
Сообщения: 1001
Зарегистрирован: 16 окт 2011, 20:25
Благодарил (а): 24 раз.
Поблагодарили: 121 раз.

След.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в Уроки на другие темы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0