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

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

Добавлено: 06 июн 2011, 14:01
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

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

Добавлено: 18 авг 2011, 15:53
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);
:)

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

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

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

Добавлено: 25 янв 2012, 08:20
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){и пошел код.....
ничего не выходит

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

Добавлено: 25 янв 2012, 09:09
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){
так тоже

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

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

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

Добавлено: 06 мар 2012, 19:07
gpv123
gaponj88, если не ошибаюсь, MD5.hash

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

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

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

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

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

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