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

Крот

Новичок
Как лучше всего реализовать возможность пользователя редактировать последний коммент?

Приветы!

Интересно, как реализовано на том же Youtube возможность пользователя редактировать свой последний комментарий?

Ну, допустим, я написал текст комментария, отправил. Произошел ajax запрос, комметарий добавился, в DOM прописался HTML код комментария с кнопкой Edit.
Но если я делаю рефреш страницы, то кнопки Edit уже нету; прямой запрос разумеется уже не отправить, т.к. срабатывает защита.

Как реализована эта защита?
Мне кажется, что пользователю в сессию записывается какая-то переменная, назовем ее $_SESSION['checker']. Эта переменная меняется каждый раз, когда пользователь посещает новую страницу сайта. Если пользователь создал комметарий, то в таблицу комметариев пишется что-то типа comment_id, user_id, body, checker_value
где checker_value - значение переменной $_SESSION['checker'] на момент создания комментария. И редактировать этот комментарий можно только в том случае, если значение checker_value из таблицы совпадает с $_SESSION['checker'].

Может быть есть более правильные способы реализации такого механизма? Без доп. поля и т.д.
А если с полем, то какого типа данных его лучше вообще делать ( crc32(time() + 'abrakadabra' )?

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

Спасибо!
 

zerkms

TDD infected
Команда форума
в DOM прописался HTML код комментария с кнопкой Edit.
Но если я делаю рефреш страницы, то кнопки Edit уже нету; прямой запрос разумеется уже не отправить, т.к. срабатывает защита.

Как реализована эта защита?
где тут защита? после добавления коммента в html добавляем кнопку и отдаём её в ajax-ответе. в ответе на обычный запрос кнопки нет. какая защита?
 

Крот

Новичок
CSRF это понятно.

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

Допустим, я вчера оставил комментарий. Сегодня я хочу его изменить (хотя по задумке разработчиков это сделать невозможно). Я шлю запрос а-ля comment.php?action=edit&comment_id=123&body=Я_поменял_коммент и, вуаля, коммент меняется. Вот я имел ввиду такую защиту (от маленьких кул-хацкеров), как ее лучше реализовать?

PS: Да, у меня паранойя с секурностью. :)
 

zerkms

TDD infected
Команда форума
Крот
Допустим, я вчера оставил комментарий. Сегодня я хочу его изменить (хотя по задумке разработчиков это сделать невозможно).
т.е. посчитать сколько минут назад оставлен комментарий и принять решение ты не можешь?
 

Крот

Новичок
Скорее всего я буду делать след. образом; пользователь может изменить,удалить комментарий в течение 2-3 минут, после этого он изменить комментарий уже не может. И не буду заморачиваться с переменной в сессии вообще.

-~{}~ 25.10.09 13:06:

Автор оригинала: *****
ню-ню
*****, ну объясни что не так. Поправь...
Возможно я где-то ошибаюсь.
 

Крот

Новичок
Автор оригинала: zerkms
ты уверен, что данные на ютубе улетают гетом?
Это я к примеру просто привел Youtube, как пример того, где можно увидеть такой механизм редактирования\удаления комментариев. Данные там улетают POSTом; я GET привел для наглядности.

-~{}~ 25.10.09 13:55:

Прочитал про CSRF, да это именно оно и есть. Перепутал с XSS.
 

Alexandre

PHPПенсионер
все намного проще,
стоит простенькая защита что-то типа модуля accesskey на сервере, который просто даст доступ к скрипту с чужой сессией.
 

Крот

Новичок
Автор оригинала: Alexandre
все намного проще,
стоит простенькая защита что-то типа модуля accesskey на сервере, который просто даст доступ к скрипту с чужой сессией.
Alexandre, а можно немного поподробнее плиз...
 

Фанат

oncle terrible
Команда форума
офигеть.
ставить новый веб-сервер, взгромоздить на него левый модуль и переписать ВСЕ ссылки на сайте - это "намного проще", чем добавить в форму одно хидден поле.
 

Крот

Новичок
К сожалению не на ngnix'е, а на lighttpd.

Сделаю ручками всё наверное.
 
Сверху