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

Уроки по PHP, Javascript и т.п.
Sasho'OK 515
Сообщения: 36
Зарегистрирован: 27 мар 2011, 14:03

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

Сообщение Sasho'OK 515 »

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

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

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

Пример реализации :

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

 <?$money = '5900';$level = '5';$police = '9';$opit = '7200'; $arr = array('response'=>array(                array('money'=>$money),                array('level'=>$level),                array('police'=>$police),                array('opit'=>$opit),                array('hash'=>md5($money.'_'.$level.'_'.$police.'_'.$opit))                ));echo json_encode($arr);?> 
Данный скрипт выводит данные в JSON.
Поле hash формируется по формуле :

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

 hash = md5(информация1 + "_" + информация2) 
Суть защиты :
При смене значений хэш не будет соответствовать данным!
Главное :
Не забывайте проверять хэш в клиенте по формуле!

В завершение :
Ответ от сервера в Action Script 3 будет таким :

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

{"response":[{"money":"5900"},{"level":"5"},{"police":"9"},{"opit":"7200"},{"hash":"4ac3c6deffa5ea6fb417129cfc8b02c7"}]}
__________________________________________________________________________________________
Если есть грамматические ошибки, пишите их в комментариях т.к. я писал в спешке этот урок :D
garymar
Сообщения: 30
Зарегистрирован: 26 авг 2010, 14:57

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

Сообщение garymar »

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

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

$auth_key= md5($app_id."_".$viewer_id."_".$api_secret); $money = '5900';$level = '5';$police = '9';$opit = '7200'; $arr = array('response'=>array(                array('money'=>$money),                array('level'=>$level),                array('police'=>$police),                array('opit'=>$opit),                array('hash'=>md5($money.'_'.$level.'_'.$police.'_'.$opit.'_'.$auth_key))                ));echo json_encode($arr);
:)
$Sasha$
Сообщения: 47
Зарегистрирован: 06 авг 2011, 20:07

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

Сообщение $Sasha$ »

а можно ещё и через sha1 шифровать :D
Для Action Script'a нужна библиотека
Аватара пользователя
gaponj88
Сообщения: 433
Зарегистрирован: 21 окт 2011, 12:26

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

Сообщение gaponj88 »

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

сервер:

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

$arr = array(array('scores'=>$user_data['scores']),array('hash'=>md5($user_data['scores'].'_'.$auth_key)));echo json_encode($arr);ответ:[{"scores":"153"},{"hash":"d27b8196682f02ba4df5b7c04d4639c4"}]
флеш:

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

var hash2 = ( json_datazxc[0].scores + LoaderInfo(root.loaderInfo).parameters.auth_key );if(json_datazxc[0].hash == hash2){и пошел код.....
ничего не выходит
Аватара пользователя
gaponj88
Сообщения: 433
Зарегистрирован: 21 окт 2011, 12:26

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

Сообщение gaponj88 »

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

 var json_datazxc:Array=JSON.decode(loaderzxc.data);    var hash2 = LoaderInfo(root.loaderInfo).parameters.auth_key    var hash3 = MD5(json_datazxc[0].scores + "_" + hash2);    if(json_datazxc[0].hash == hash3){
так тоже
gpv123
Сообщения: 346
Зарегистрирован: 29 янв 2012, 20:57

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

Сообщение gpv123 »

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

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

Сообщение gpv123 »

gaponj88, если не ошибаюсь, MD5.hash
Kurutah
Сообщения: 42
Зарегистрирован: 09 ноя 2011, 12:40

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

Сообщение Kurutah »

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

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

Сообщение Kurutah »

С предыдущим разобрался, но вот вопрос, если данные через xml передаются, защищать от charles аналогично нужно?
Alazaur
Разработчик
Разработчик
Сообщения: 1001
Зарегистрирован: 16 окт 2011, 20:25

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

Сообщение Alazaur »

Kurutah, без разницы какой метод передачи, все аналогично. Но заметьте метод защищает только передаваемые значения, проверку нужно все равно делать, особенно при передаче данных от клиента серверу, поскольку пользователю ничего не стоит послать такой же запрос с теми же значениями и с тем же хешем еще 10 раз и получить таким образом например опыта в 10 раз больше)
Ответить