Электронная подпись при передаче переменных

Kelkos

Сам себе программер
Электронная подпись при передаче переменных

Сколько не читал форум ни разу не видел такого метода защиты, как электронная подпись передаваемых данных. Ведь передача переменных типа http/musite.ru/indep.php?a=1&b=2 - это самое узкое место в защите.
Подпись генерим с "секретным словом"
$hash=md5 ($a.$b.$secret_word);
паредаём вместе с другими переменными
http/musite.ru/indep.php?a=1&b=2&hash=.............
а в начале каждого скрипта генерим подпись из полученных переменных и сравниваем с полученной.
Что в этом методе отпугивает програмистов? Почему это почти не получило развития? Может тут есть "подводные камни"?
 

Фанат

oncle terrible
Команда форума
есть.
в утверждении
передача переменных типа http/musite.ru/indep.php?a=1&b=2 - это самое узкое место в защите
которое не имеет ничего общего с реальностью.
 

Kelkos

Сам себе программер
Фанат.. вот уж не хотел тебе ВООБЩЕ отвечать, но тут ты меня задел.. тля.. берутся же всякме (тут я написал "ламеры", но потом стёр.. сам то я недалеко ушёл от них) пальцы гнуть и пузыри пускать.
Из известных мне реализаций могу назвать денежные расчёты через webmoney merchant и систему денежных расчётов roboxchange.com . и это только из мне известных. Могу предположить, что и другие серьёзные системы придерживаются такого метода.
 

Фанат

oncle terrible
Команда форума
Из известных мне реализаций денежных расчётов НИКТО не занимается таким идиотизмом, как прятать адресную строку.
а делают по людски, через SSL
 

Kelkos

Сам себе программер
Из известных мне реализаций денежных расчётов НИКТО не занимается таким идиотизмом, как прятать адресную строку.
А я её прячу? Сам считаю, что прятать передаваемые переменные - идиотизм.
и, что-то мне подсказывает, что когда ты писал свой пример, ты не платежную систему имел в виду.
Естественно нет.. там такое УЖЕ реализованно.
может быть, тебе не стоит беситься, п поробовать вникнуть в смысл того, что я пишу, и задать вопросы,если что-то неясно?
Будет к тебе мааленькая такая просьба.. НЕ ОТВЕЧАЙ НИКОГДА НА МОИ ПОСТЫ! Н И К О Г Д А - тебе такое слово знакомо?!
--------------------------------------------
Тля.. вот и изгадили тему. :(
 

Фанат

oncle terrible
Команда форума
Ладно-ладно, ошибся я.
ты бы видел какие тут вопросы кругом.
не враз перестроишься.
не нервничай только.

-~{}~ 25.06.04 23:44:

итак.
по поводу подписывания переменных.

почему так никто не делает.
потому, что передача по ссылке - это всего лишь фрагмент приложения. И контроль переменной нужен не только в этот момент. Неверное значение может появиться и в самом скрипте, в результате неверной его работы. и он радостно передаст его дальше и тот скрипт его радостно примет.
переменные надо проверять всегда, независимо от способа передачи. поэтому подписывание такое становится довольно бессмысленным.

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

Kelkos

Сам себе программер
Ух ты.. просто не узнаю тебя.
ты можешь привести конкретный пример случая, когда такая подпись пригодилась бы?
Да вообщем то да.
Есть вот такая ситуация. Есть дререво меню. На каждый элемент меню можно давать разрешения/запрещения для пользователя ( т.е. делать закрытые разделы), но проблема в том, что пользователь не запрещается для подразделов этого раздела, т.к. в этом меню каждый элемент может принадлежать нескольким элементам. Т.е. нужно, что бы через этот пункт меню пользователь не мог попасть в его подпункты (а если подпункты присутсвуют в других элементах, то мог попасть без проблем.). Скажу сразу, что одной из задач ставилась наименьшая нагрузка на сервер MySQL, поэтому перебирать всю структуру меню я посчитал нерациональным. Вот в таком случае и подходит этот метод.
Ещё пример.. в моём первом сайте я передавал имя файла "в открытую".. меня сразу же "хакнули" добрые хакеры.. а вот подписывал бы я правильность передаваемого файла, тогда бы не хакнули.
--------
Я, конечно, понимаю, что этот метод не панацея от логических ошибок, но по крайней мере гарантирует, что никто не начнёт испытывать логику скрипта на возможные ошибки, которые програмист не заметил сразу и переменные будут передаваться именно такми, каками мы их и передаём.
 

Фанат

oncle terrible
Команда форума
ты спросил
Что в этом методе отпугивает програмистов
такие проверки делаются при получении данных. все равно делаются.
т.е. в дополнительной подписи просто нет смысла.
их отпугивает делание двойной работы.

в частности, файл надо бы проверять и на существование.
перед чтением.
и неважно, что ты сам его передал. если бы ты проверял, то во-перваых, тебя бы не хакнули, а во-вторых, не понадобилась бы подпись.
 

Kelkos

Сам себе программер
Да вообщем то да.. желаьельно всё таки делать нормальными способами, но иногда надо слишком много работы провести, что бы понять. правильные ли данные получены (определить пользователя, проверить его права на совершение операции, проверить возможность совершения самой оперции) и тогда именно "нормальная" проверка и будет как раз той самой "повторной работой".
Кстати, сделал несколько простых функций, которые к каждой переменной приклеивают "электронную подпись" значения переменной, получают значение переменной и проверяют целостность. Очень удобно таким образом передавать опасные переменные.
т.е. имеем
$oper='delete';
передаём её с подписью (несколько первых символом из строки md5 .. просто и 10 символов достаточно, что бы весь перебор значений на самом мощьном компе составил около года)
http://mysite.ru/index.php?oper=delete12dcfert5br73
Ну а скрипте получателе проверяем целостность данных.. дёшево и сердито.
Если кому нужны будут эти функи (скорее всего новичкам), то кидайте mail .. скину скриптик
----------------------
Ладно.. я просто предложил такой метод на правах "оригинальщины".
 

SiMM

Новичок
Автор оригинала: Kelkos
определить пользователя, проверить его права на совершение операции, проверить возможность совершения самой оперции
Почитай о сессиях что-ли.
)и тогда именно "нормальная" проверка и будет как раз той самой "повторной работой"
Не будет. Либо пиши так, чтобы тебя это не напрягало и "повтороной" работы не было.
 

neko

tеam neko
Kelkos

это все бред, чистой воды + полное непонимание проблемы.

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

а проблема то у нас, ути-пути...

не запрещается для подразделов этого раздела, т.к. в этом меню каждый элемент может принадлежать нескольким элементам. Т.е. нужно, что бы через этот пункт меню пользователь не мог попасть в его подпункты
решается тривиально
при изменении чего-либо в привелегиях для ноды, пересчитываешь привелегии для тех дочерних объектов которые их должны унаследовать.
и результат куда-угодно сохраняешь.
для того чтобы на каждого нового юзера эти пересчеты не делать существуют, правильно дети, группы.

как делать систему привелегий и как привелегии кешировать обсуждалось совсем недавно в связи с какой-то cms. ищи.

Скажу сразу, что одной из задач ставилась наименьшая нагрузка на сервер MySQL
радость моя, а ты нагрузку на сервер при расчете дайджеста не пробовал мерять?

-~{}~ 27.06.04 00:44:

просто и 10 символов достаточно, что бы весь перебор значений на самом мощьном компе составил около года
годовалый ты наш, ты про сети слышал?
 

neko

tеam neko
для данной задачи я его описал.
за конкретными реализациями обращайся в поиск
 

Kelkos

Сам себе программер
Neko.. не стоит так уж категорично реагировать.. Я просто выложил немного необычный метод защиты данных. Он прост и понятен для новичков..

годовалый ты наш, ты про сети слышал?
ну ктоже мешает поставить 16 символов и тогда никакие сети не помогут.

какой же подход 'самый верный'?
любой рабочий и безопасный.
---------------------------------
Вообще то можно на сайте сделать форум "Оригинальные идеи и методы" куда помещалась бы подобная фигня.
 

neko

tеam neko
Я просто выложил немного необычный метод защиты данных. Он прост и понятен для новичков..
"проблема" твоя совершенно тривиальная.
реализовывали такие системы миллион раз.
решений куча.
твое -- отвратительное.
и именно "новичкам" не надо забивать голову такой дурью.

Вообще то можно на сайте сделать форум "Оригинальные идеи и методы" куда помещалась бы подобная фигня.
такой форум уже есть.
recycle bin называется

насчет скорости подбора данного дайджеста видимо мне таки придется попробовать :Р
 

Kelkos

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

lucas

Guest
Kelkos
Где же тут хамство?
С какой из процитированных строк ты не согласен?

если бы... ты предложил что то дельное
Если бы ты удосужился прочитать пост neko полностью и не по диагонали, то "дельное" бы ты увидел.
 
Сверху