(PHP) Проверить откуда на самом деле был POST

Vladimir Kozlov
Дата: 03.08.2006 22:12:03
Задачка такая:

Имеются страницы A,B,C написанные на php. Пользователь вводит некие данные на странице A, эти данные уезжают постом на страницу B которая попутно кидает их в куки. После этого пользователь может в другом месте страницы A что-то еще ввести и запостить, пост опять уходит на B, там вытаскивается предыдущий кукис и новый пост к нему доклеивается.
На странице B имеется форма, которую пользователь заполняет, и содержимое этой формы вместе с содержимым кукиса который к этому времени набрался, постится на страницу C.
Что нужно: проверять на странице C что POST на нее сделан именно с B. Естественно, злонамеренный пользователь может и реферрер подделать и куки пририсовать, поэтому нужен некий хитрый алгоритм.

Пока единственное что приходит в голову - при посте на страницу B формировать некий GUID, кидать его в хидден-поле формы, и рядом помещать хэш из этого гуида + содержимое кукиса + секретный ключ на сервере. Этот хэш проверять на странице С, плюс к тому отслеживать в mysql не было ли уже такого GUID-а.

Но может есть более простое решение?
Модератор:
Оформляйте топики согласно требованиям форума!!! Топики оформленные не по правилам - будут удаляться.
vkle
Дата: 04.08.2006 01:39:27

Может быть, использовать сессии?

Posted via ActualForum NNTP Server 1.3

Vladimir Kozlov
Дата: 04.08.2006 09:27:39
vkle

Может быть, использовать сессии?


Сессии не подходят по ряду причин. Нужно именно без сессий сделать.
1024byte
Дата: 07.08.2006 12:39:36
Ну например при генерации отправляемой страницы, генерировать ей какой-нибуть уникальный id который будет так-же передаваться POSTом. в Это время записать (например в файл) данные о пользователе (ip,browser, еще что-нить по желанию, id и время). При получении POST данных сверить, отдавали ли мы такой id пользователю с таким ip и когда. Если всё ок, то принимать и стирать данные из файла чтобы не было повторной попытки. Иначе отправлять его нафиг.

А вообще имхо это параноя, и, если не секрет, по какой причине не устраивают сессии ?