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 :: защита от подмены формы через post
надо проверять на соответсвие тому что пришло в POST запросе.
DlTA
Отправлено: 12 Января, 2013 - 01:16:46
Постоянный участник
Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010
Помог: 53 раз(а)
непонятно от чего она должна быть безопастна
и на самом деле это все выглядит как попытка обезопасить путем отсылки о запроса 2 значений
мол если хоть какое то скопировали и прислали обратно не так же то ошибка
но значения/ключи то принципиально мало чем отличаются
почему два? потому что первый ключ это кука сессии. от то саоме 32 символьное значение, второе это то что пытаетесь передать в скрытом поле, и то и второе можно подделать
как быть? вам надо было в сессии хранить не какое то абстрактное значение а вполне конкретные, те которые подделать сложнее,
а именно IP адрес, причем передавать его в скрытом поле совсем не обязательно, он и так передается
ну а чтоб жизнь некоторым совсем "подгадить" попутно можно хранить и иные присланные данные: о браузере, о системе, ... (Добавление)
о еще и реф смотрите, ну это проверка из иного
и прежде надо определиться для чего и что проверяется
spsu
Отправлено: 12 Января, 2013 - 01:21:06
Частый гость
Покинул форум
Сообщений всего: 176
Дата рег-ции: Нояб. 2012
Помог: 3 раз(а)
Цитата:
непонятно от чего она должна быть безопастна
Думаю от CSRF, от него такая проверка если чекается соответсвие хайден поля и значения в сессии вполне спасет.
Vaio
Отправлено: 12 Января, 2013 - 01:28:47
Гость
Покинул форум
Сообщений всего: 116
Дата рег-ции: Дек. 2012
Помог: 0 раз(а)
DlTA, не знаю возможно я уже туплю, но не понял ни одного вашего слова. Или покажите в моем коде что я не так сделал, или сделайте пример.
Относительно HTTP_REFERER подменить его не будет проблемой и защититься им можно только от детей (чтобы их сразу обломать я его и написал).
DelphinPRO
Отправлено: 12 Января, 2013 - 01:29:44
Активный участник
Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012
Покинул форум
Сообщений всего: 116
Дата рег-ции: Дек. 2012
Помог: 0 раз(а)
DelphinPRO, спасибо за ваш пример. По такой схеме у меня может быть несколько форм я получу $ _SESSION ['token'] в одной и отправлю данные в другую. Не есть хорошо.
Я уже сделал привязку $ _SESSION ['userid'] ['profile'] (profile - название формы), также взгляните на эту функцию как на меня она на столько же надежна как и ваша:
Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012
Помог: 353 раз(а)
Vaio пишет:
По такой схеме у меня может быть несколько форм я получу $ _SESSION ['token'] в одной и отправлю данные в другую. Не есть хорошо.
ну я же всего лишь пример показал. делайте как у вас $_SESSION['token']['formname']. делов то.
Vaio пишет:
также взгляните на эту функцию как на меня она на столько же надежна как и ваша:
if(empty($_POST[$_SESSION['userid']['profile']]))
die('Вы не правильно ввели имя');
да, действительно, невнимательно посмотрел в первый раз. надежность такая же. да и логика в общем-то та же. пора мне спать идти.
----- Чем больше узнаю, тем больше я не знаю.
Vaio
Отправлено: 12 Января, 2013 - 20:35:14
Гость
Покинул форум
Сообщений всего: 116
Дата рег-ции: Дек. 2012
Помог: 0 раз(а)
То можно считать мою форму защищенной ли кто-то может еще что-то подсказать?
spsu
Отправлено: 12 Января, 2013 - 21:11:06
Частый гость
Покинул форум
Сообщений всего: 176
Дата рег-ции: Нояб. 2012
Помог: 3 раз(а)
[quote=Vaio][/quote]
Да, если не будет на сайте xss но это уже другое..
DlTA
Отправлено: 13 Января, 2013 - 00:21:53
Постоянный участник
Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010
Помог: 53 раз(а)
Vaio пишет:
не понял ни одного вашего слова. Или покажите в моем коде что я не так сделал, или сделайте пример.
похоже до конца не дочитали
храните в сесси IP адрес клиента которому вы выдате свою форму, и от которго потом получаете рез. по форме, если адрес не сходится ил вообще сессия левая, значит злоумышленник.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.