пишу CRUD с AJAX (jQuery). Всё красивенько, но задался вопросом безопасности. В частночти у каждого пользователя свои странички (связь через соответствующее поле в таблице БД). При передаче id страницы в явном виде id светится, что не есть гуд. думаю, можно сделать запрос с подменой этого id и, скажем, удалить чужую страницу. Пока сделал так, что для каждой страницы в БД есть поле с уникальным хешем, и именно по хешу происходит идентификация страницы. Норм способ защиты? Как ещё можно защититься? Кто-то, скажем, палит заголовок, но и его по идее можно подделать.
Ensiferum ну и всё, если чувак имеет куки, которые идентифицируют его, что он может удалить это иди, то пусть удаляет, иначе - нет прав...
я понимаю, что это РЕСТ но ты можешь куки сделать как параметр а не как куки, чтобы отвечать требованиям РЕСТ
Ensiferum Обычно при удалении проверяется принадлежит ли эта страница данному пользователю. Если да - удалить, если нет - выдать ошибку прав доступа
не, вопрос вот какой: скажем, адрес AJAX-запроса выглядит так "ajax.php?act=deleteitem&id=24". Скажем, такая ссылка вылезла лишь у одного человека (хозяина страницы). Что ему мешает сделать запрос "ajax.php?act=deleteitem&id=25", удалив страницу, не принадлежащую ему? Сейчас у меня запросы такого вида "ajax.php?act=deleteitem&id=24&hash=123abc654def321456987456321456ab". Обработчик ищет запись у которой id=24 и hash=123abc654def321456987456321456ab и удаляет его. Как через AJAX идентифицировать пользователя, чтобы он мог удалить и работать только с тем, что принадлежит ему?
Ensiferum Ну вобще-то в AJAX запрросах куки тоже передаются, следовательно у тебя есть сессия пользователя. Проверяем, пренадлижит ли страница ему и удаляем, если true
Ensiferum Просто РЕСТ подразумевает, что данные, идентифицирующие пользователя передаются в теле запроса, а не в куках ибо с рестом может работать ПО которое не сохраняет куки..
Костян С таким ПО только какие-то параметры-ключи. Или не давать делать определённые действия без авторизации. Т.е. типа смотреть можно, а удалить извольте авторизоваться и получить ключ сессии.
Psih ну да, только ключ сессии должен передваться не в куках а в параметрах запроса, судя из регламента РЕСТ
Костян Угу, это я и иммел ввиду. Можно его ставить кукой, если куки поддерживаются. Хотя конечно лучше параметры просто передавать.