Можно ли подделать передаваемые данные через AJAX

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

Модераторы: Цукер
  1. yeaahhh

    yeaahhh

    Регистр.:
    8 май 2008
    Сообщения:
    278
    Симпатии:
    11
    Ребят, у меня на сайте очень много асинхр. запросов.
    Задался вопросом: а можно ли как-то подделать переменную "logpol", которая принимает значение $aaa['login'] из БД?
    HTML:
    
    $.ajax({
    type: "POST",
    url: "wink.php",
    data: "logpol=<?=$aaa['login'];?>",
    cache: false,  
    success: function(html){ 
    alert(html);
    }
    });
    
    Если да, то как можно обезопаситься от атких постановок?
    Заранее спасибо.
     
  2. coguar

    coguar Постоялец

    Регистр.:
    4 авг 2007
    Сообщения:
    61
    Симпатии:
    11
    хешированием логина и сессии.
    при изменении логина хеш будет изменяться, надо сравнивать хеши и если хеш разный - то левый запрос.

    md5($login.$pass.$session);

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

    md5(md5($login).md5($pass).md5($session));

    Кароче сделать надо так чтобы только один сайт знал какой хеш и с ним работать, а если хеш не правильный то идет попытка взлома. также для таких целей полезно логирование событий.
     
  3. yeaahhh

    yeaahhh

    Регистр.:
    8 май 2008
    Сообщения:
    278
    Симпатии:
    11
    А каким способом можно подставить-то? POST-запрос же.. разве можно менять исходный код страницы?
     
  4. usja

    usja Создатель

    Регистр.:
    17 авг 2011
    Сообщения:
    34
    Симпатии:
    5
    Конечно. Что firebug и вперед. Можно и страницу у себя сохранить, подделать данные и отправлять их на сервер. Но, если отправлять через аякс post, не с того домена, то запрос может не пройти.

    А так, через firebug все запросы удачно можно просмотреть и ответы на них.
     
    yeaahhh нравится это.
  5. usja

    usja Создатель

    Регистр.:
    17 авг 2011
    Сообщения:
    34
    Симпатии:
    5
    Кстати, вашем случае, если вы передаете данные идентифицированного пользователя в запросе использовал данный из аутентификации, а не то, что он передает.
    Если передается, например, комментарий от пользователя — вам нужно лишь передавать сам текст и id топика куда идёт коммент. id пользователя нужно брать из сессии.