Безопасность ajax запросов

Тема в разделе "Другие языки", создана пользователем Raccoon, 10 авг 2010.

Статус темы:
Закрыта.
Модераторы: Цукер
  1. Raccoon

    Raccoon

    Регистр.:
    31 июл 2007
    Сообщения:
    176
    Симпатии:
    9
    Добрый день.

    Возник вопрос по работе с аякс запросами, допустим посылаем мы запрос серверу вроде

    var commentId = 45;

    $.ajax({
    type: "GET",
    url: "ajax/comment/delete/,
    data: { comment: commentId}
    ...

    Юзер же может подделать запрос и удалить коммент соседа, введя там 46, 47, 48 и так далее. Как идентифицировать пользователя? Ведь сессии нет.

    Кроме как передавать какой-нибудь personal-key вроде md5 в голову не приходит.
    Ну или направлять запрос на страницу, которая в общей структуре MVC, где работают сессии, и разруливать конструкцией вида

    if($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest') {
    аякс код
    } else { PHP код }
     
  2. sw04

    sw04 seoplayer

    Регистр.:
    1 дек 2007
    Сообщения:
    601
    Симпатии:
    193
    я разруливаю с помощью куков, на основе куков, привязанных к сессиям.
     
  3. Raccoon

    Raccoon

    Регистр.:
    31 июл 2007
    Сообщения:
    176
    Симпатии:
    9
    Как-то это не практично разруливать авторизацию с помощью клиента.
     
  4. DupleX

    DupleX Создатель

    Регистр.:
    20 апр 2006
    Сообщения:
    26
    Симпатии:
    4
    Естественно, что твой ajax скрипт должен инклудить файл, где есть session_start() (то есть это может сделать только member), а сам запрос удаления записей строить таким образом, чтобы в них участвовал userID пользователя, взятый из сессии - то есть удалить записи где ид записей IN 47,48,49 и где ид юзера равен userID
     
    Raccoon нравится это.
  5. Raccoon

    Raccoon

    Регистр.:
    31 июл 2007
    Сообщения:
    176
    Симпатии:
    9
    Все понял, надо просто в общей структуре MVC сделать файл типа ajax.php, который будет отрабатывать запросы Яакса, но при этом будет жить в сессии, а я сначала делал в отдельную папку /ajax/ складывал скрипты и к ним обращался по отдельности.
     
Статус темы:
Закрыта.