Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Рандомная генерация ключа и передача его через GET запрос

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Dark_Knight
Отправлено: 08 Мая, 2014 - 13:44:22
Post Id


Новичок


Покинул форум
Сообщений всего: 49
Дата рег-ции: Дек. 2013  


Помог: 0 раз(а)




Есть игровой скрипт, который передает инфу в php обработчик в шифре через GET. Дальше обработчик добавляет/редактирует информацию в БД. Сам скрипт генерирует строку, шифрует её через функцию в которую передаются что шифровать, ключ шифра и возращает строку.
Щас у меня все работает на статическом ключе в скрипте и обработчике. Но зная что скрипт могу вскрыть и посмотреть ключ и смогу редактировать данные сами, чего хочется избежать.
Подувавши пришел к мнению, что можно сделать рандомную генерацию ключа, но столкнулся с проблемой. Как передать ключ вместе с информацией так, чтобы не было заметно их передачи?

Это что-то на уровне Высоцкого или даже выше.
 
 Top
LIME
Отправлено: 08 Мая, 2014 - 13:50:06
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




не получится ничего зашифровать безопасно на клиенте
потому не надо никакие данные передавать
надо передавать действия
например при перемещении на карте не передавать новые координаты а передать направление шага...а сервер сам сменит координаты зная предыдущие
 
 Top
Zuldek
Отправлено: 08 Мая, 2014 - 13:55:16
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)




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

(Отредактировано автором: 08 Мая, 2014 - 13:58:52)

 
 Top
Dark_Knight
Отправлено: 08 Мая, 2014 - 13:58:29
Post Id


Новичок


Покинул форум
Сообщений всего: 49
Дата рег-ции: Дек. 2013  


Помог: 0 раз(а)




У меня чуть другие данные. Информация о убийствах, смертях, количество нанесенного урона, имя, ключ и ип адресс сервера. Вот http://killinformer[dot]ru/statistics проекта, чтобы было более понятно, что я хочу передавать.

Если перейти фак или на главную, то там не будет ссылок на ЛК и общую статистику.Они пока в проекте. В статистике база заполнена рандомными данными.
 
 Top
LIME
Отправлено: 08 Мая, 2014 - 14:01:11
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




ну и зачем весь этот набор вообще передавать?
передай идентификатор юзера и всё
а данные возьми в базе
 
 Top
Zuldek
Отправлено: 08 Мая, 2014 - 14:10:02
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)




Шифрование подразумевает, что зашифрованы данные, и передаётся ключ для расшифровки.
Соответственно зашифруете вы данные, к примеру по одному из алгоритмов mcrypt, в клиентах будет ключ для расшифровки. Если вы будете менять ключ на стороне сервера, вам всёравно придётся этот ключ передать клиенту. Сделать это сложности не составит, но в конечно счете ключ может быть получен при простым анализом трафика.

(Отредактировано автором: 08 Мая, 2014 - 14:11:05)

 
 Top
Dark_Knight
Отправлено: 08 Мая, 2014 - 14:25:34
Post Id


Новичок


Покинул форум
Сообщений всего: 49
Дата рег-ции: Дек. 2013  


Помог: 0 раз(а)




LIME пишет:
ну и зачем весь этот набор вообще передавать?
передай идентификатор юзера и всё
а данные возьми в базе

А новые данные откуда брать? Все данные берутся из скрипта.
Zuldek пишет:
Сам подход имхо утопичен для игр, если речь идёт о риалтайм приложениях. В конечном счете вы усложните жизнь себе и замедлите само приложение при это всёравно всё может быть расшифровано и подделано.
Задача сервера проверять каждый пакет на валидность, а не доверять зашифрованным данным пришедшим под конкретным ключём. Подобным образом устроены античит-проверки всех популярных игровых серверов риалтайм-ммо проектов. При этом пакеты могут проверяться выборочно, а каждый пакет проверяется на валидность и принадлежность конкретному клиенту.
Язык на котором я пишу не поддерживает работу с пакетами.
Zuldek пишет:
Шифрование подразумевает, что зашифрованы данные, и передаётся ключ для расшифровки.
Соответственно зашифруете вы данные, к примеру по одному из алгоритмов mcrypt, в клиентах будет ключ для расшифровки. Если вы будете менять ключ на стороне сервера, вам всёравно придётся этот ключ передать клиенту. Сделать это сложности не составит, но в конечно счете ключ может быть получен при простым анализом трафика.

Мне бы хотелось, чтобы ключ генерировался у клиента, а сервер уже ключ этот распознавал сам. С алгоритмов шифрования на клиенте я могу использовать только XOR.

(Отредактировано автором: 08 Мая, 2014 - 14:27:08)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB