Однозначная идентификация запроса к странице

Goblinid

Новичок
Однозначная идентификация запроса к странице

Всем здраствуйте.
Мой вопрос больше относиться к теории, но наверное и практически может ктонибудь помочь.

Итак. Есть программа на C++, мною написанная. (не удивляйтесь - скоро и про пхп будет). Эта программа отправляет
запросы с данными на сайт через метод POST - опять таки сайт только мой. Данные кладутся в MySQL базу с помощью пхп.
Все это отлично, но есть пара моментов...
Первый и главный - а если какойнить кулхацкер перехватит запрос- посмотрит на него и начнет слать свои? В принципе ничего страшного - запрос от программы проверяется как запрос от форм, но в базу все-равно пролезет информация ненужная и лишняя. Значит, что бы такого не произошло
необходима идентификация, т.е. посылать еще какой-либо параметр, который однозначно указывал бы - что таки да, это послала программа на С++ а не хакер.

И вот тут я присел - что можно такое на пхп использовать? Может быть есть какие либо скрипты работающие, например, с pgp? Тогда вроде проще - нагенерил ключей да и предавай туда сюда.
Или что либо более простое - что можно исползовать в качестве однозначной идентификации?

Но опять же кто мешает злоумышленнику перехватить ключ при передаче и подделать его?
Может быть можно както шифровать запрос? Но тогда какую систему шифрации использовать?
Есть что либо такое что можно было бы адаптировать и к С++ и к ПХП?

В общем - прошу помощи... Хотя бы теоретической.
 

jonjonson

Охренеть
Goblinid, отправку ещё одного post запроса для идентификации трудно дописать? Ну и поддержку кук добавить (в скриптах на стороне сервера использовать сессии). В общем, раз эмулируешь своей программой браузер, то делай это полностью.
 

Goblinid

Новичок
2 jonjonson
Не совсем вас понял. Ну хорошо - отправляем еще один POST запрос - в нем пишем "?Identy='ДА ЭТО МОЯ программа на C'"
И что мешает злоумышленнику отправить такой же запрос?
В скриптах на стороне сервера используются куки - но опять таки я не эмулирую браузер, мне просто надо отдавать статистику от программы в инет...

2 Solid:
Но с чего начинать? openssl?
То есть изучить его функции всякие там openssl_get_publickey() и т.д.? А как его на стороне клиента использовать? То есть мне надо идентифицировать клиента, а не ходить по защищенному каналу.

Так что может еще кто скажет чтонить?
 

Андрейка

Senior pomidor developer
отправлять уникальную строку + md5(параметры+уникальная строка+некое значение известное программе и скрипту)
а про передачу ключей чет у тя непонятно.. их надо передавать обязательно?
 

Goblinid

Новичок
Вопрос.. есть ли у меня функция в с++ для md5 кодирования... счас гляну.Да вроде есть... надо разобраться
А зачем уникальная строка?
То есть если я, грубо говоря, закодирую слово "программа" в md5, и отправлю на сервер, а на сревре раскодирую и проверю - да, это слово "программа", то в принципе мне это подходит. Но ведь и злоумышленник может сделать тоже самое... просто тупо повторить эту строку и у меня начнется в базе дублирование записей... или раскодировать - посмотреть что передается, закодировать свое и так же отправить. То же плохо.... Но в целом выход для части случаев.
Еще, может как вариант, после md5 кодирования, проитись своей функцией, например - смещать каждый символ получившейся строки на два байта... и тогда пусть хоть раскодируется... ничего не выйдет. Но тогда, как в пхп сместить символ на два байта обратно? Этого я не знаю :(

-~{}~ 20.01.07 19:30:

Автор оригинала: Андрейка
а про передачу ключей чет у тя непонятно.. их надо передавать обязательно?
См. предыдущий пост
 

Андрейка

Senior pomidor developer
а на сревре раскодирую и проверю
ага, раскодируй и проверь)

ведь и злоумышленник может сделать тоже самое... просто тупо повторить эту строку и у меня начнется в базе дублирование записей ответ на А зачем уникальная строка?
 

Goblinid

Новичок
Ip - динамический.. программа ходит через GPRS модем.. соответствено может меняться....

2 Андрейка: уникальная срока - ее же тоже можно перехватить.... а md5 - то же кодирование без ключа на сколько я помню, поэтому можно и раскодировать...
 

themylogin

Новичок
Goblinid,
1. MD5 - это хэширование. Посему в своей прогу:
Код:
key = md5(text . 'vahahabuhahamahahauitgnjkfnspadjofsa');
а на принимающей стороне
PHP:
if($_POST['identy'] != md5($_POST['text'] . 'vahahabuhahamahahauitgnjkfnspadjofsa')){ die('fuck away'); }
99-процентная надёжность
 

Андрейка

Senior pomidor developer
Goblinid
можно перехватить и что? считай ее идентификатором запроса .. второй запрос с такой строкой должен посылаться нафик
а md5 - то же кодирование без ключа на сколько я помню, поэтому можно и раскодировать
иди, раскодируй
 

Goblinid

Новичок
а в коде "text . 'vahahabuhahamahahauitgnjkfnspadjofsa'" - точка - это соединение как в пхп? Если да, то в С++ это не так,
но все равно спасибо... пошел теперь в c++ форум искать как там с MD5 работать...
В принципе, тема я думаю закрыта....

-~{}~ 20.01.07 20:02:

Все... начитался, понял... надо будет кодировать (вернее хэшироать- так будет правильно)... какой либо уникальный передваемый параметр...Затем, проверяем на сайте, этот хэш. Пробегаем по базе в поисках того же. и если находим - то посылаем, не находим пишем в базу. В принципе -нормально получается.... но при наличии маленькой базы. А в теории база может быть большой - тогда затупы нанутся... Это плохо....
Тогда может отдельную таличку сделать где этот хаш чисто храниться - и по ней бегать -= не хранить все яйца в одной корзине, тогда да тогда может и побыстрее, да и чистить ее отдельно периодически, в отличии от основной.. ее то можно будет чистить.
Спасибо!
 

themylogin

Новичок
а в коде "text . 'vahahabuhahamahahauitgnjkfnspadjofsa'" - точка - это соединение как в пхп? Если да, то в С++ это не так,
извиняюсь, последний раз что-то писал на сях год назад
Все... начитался, понял... надо будет кодировать (вернее хэшироать- так будет правильно)... какой либо уникальный передваемый параметр...Затем, проверяем на сайте, этот хэш. Пробегаем по базе в поисках того же. и если находим - то посылаем, не находим пишем в базу. В принципе -нормально получается.... но при наличии маленькой базы. А в теории база может быть большой - тогда затупы нанутся... Это плохо....
Тогда может отдельную таличку сделать где этот хаш чисто храниться - и по ней бегать -= не хранить все яйца в одной корзине, тогда да тогда может и побыстрее, да и чистить ее отдельно периодически, в отличии от основной.. ее то можно будет чистить.
ИМХО я предложил более простое решение безо всяких баз
 

Андрейка

Senior pomidor developer
Goblinid
какой хэш ты хранить собрался? уникальный id который? ну дык в отдельной таблице его и хранить надо.. как вариант подойдет unixtimestamp(по гринвичу)+разделитель+случайное число. в скрипте запросы с временем меньше текущего на сутки отбрасываем сразу, остальные ищем в отдельной таблице
 

Goblinid

Новичок
Автор оригинала: themylogin
извиняюсь, последний раз что-то писал на сях год назад
ИМХО я предложил более простое решение безо всяких баз
Да но в таком случае мы отбрасываем все что к этому хэшу не относится...
То есть злоумышленик просто повторно копирует мою строку запроса и она пройдет -
и ляжет соответсвенно в базу - так нельзя. В базе не должно быть повторяюшихся записей. Хотя отследить их труда не представляет. Но лучше проводить поиск по базе.

2 Андрейка
Все бы хорошо - но запросы могут быть и со временем на сутки меньшее... Упал GPRS- а очередь формируется..
Но все это детали. Во всяком случае понятно куда двигаться.
 

Андрейка

Senior pomidor developer
но запросы могут быть и со временем на сутки меньшее...
а формировать это число и хэш в момент отправки не получается?
 

С.

Продвинутый новичок
Не морочьте парню голову!

Goblinid, тебе ни нужна никакая "уникальная строка". Достаточно пароля, который не передается с запросом, а известен обоим скриптам заранее. Передается md5-хеш от конкатенирования всех строк и этого пароля.
 

WP

^_^
Андрейка
> unixtimestamp(по гринвичу)
Жжошь!

-~{}~ 20.01.07 16:05:

лучше по фаренгейту
 

Андрейка

Senior pomidor developer
WP
что вас так рассмешило?

лучше по фагенгейту
лучше б в школу сходил.. для разнообразия
 
Сверху