За последние 24 часа нас посетили 17633 программиста и 1672 робота. Сейчас ищет 1461 программист ...

Проверка источника AJAX запроса внутри вызываемого скрипта

Тема в разделе "JavaScript и AJAX", создана пользователем shurik_shink, 14 янв 2016.

  1. shurik_shink

    shurik_shink Новичок

    С нами с:
    17 май 2015
    Сообщения:
    79
    Симпатии:
    0
    Проблема следующая

    Со страницы сайта с помощью AJAX запроса вызывается скрипт execute_query.php который выполняет sql запрос в базу данных.
    Скрипту передается параметр query - который содержит запрос к базе данных.

    Можно ли достоверно убедиться что AJAX запрос пришел от внутреннего скрипта сайта, а не от стороннего скрипта?

    Для простоты понимания проблемы
    Если AJAX запрос с методом GET то зарегистрированному пользователю для выполнения своего собственного запроса достаточно лишь виполнить следующий HTTP запрос http://www.site/inner_path/execute_query.php?query=запрос пользователя.
    Если запрос с методом POST то надо написать простенький HTML документ в котором будет послан AJAX запрос.
    Единственное что этому припятствует это знание структуры базы данных.
     
  2. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.115
    Симпатии:
    1.244
    Адрес:
    там-сям
    Re: Проверка источника AJAX запроса внутри вызываемого скрип

    о боже! адресок подкинь? я хочу посмотреть. )))

    используй авторизацию чтобы контролировать доступ. твой обработчик AJAX может проверять куки или сессионные данные так же, как любой другой скрипт!
     
  3. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    Re: Проверка источника AJAX запроса внутри вызываемого скрип

    для начала - не надо передавать запрос в открытом виде. передавайте "команду" и "аргументы" для нее а в скрипте - формируйте безопасный запрос
     
  4. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.115
    Симпатии:
    1.244
    Адрес:
    там-сям
    Re: Проверка источника AJAX запроса внутри вызываемого скрип

    и это тоже. но авторизация прежде всего. иначе любой любопытный х* сможет выполнить любую команду.
     
  5. shurik_shink

    shurik_shink Новичок

    С нами с:
    17 май 2015
    Сообщения:
    79
    Симпатии:
    0
    Re: Проверка источника AJAX запроса внутри вызываемого скрип

    Я отметил в вопросе что речи идет о зарегистрированном пользователе.
    Действия пользователя: зарегистрировался, добавил в браузер закладку, ввел http запрос к скрипту
     
  6. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.115
    Симпатии:
    1.244
    Адрес:
    там-сям
    Re: Проверка источника AJAX запроса внутри вызываемого скрип

    Конечно это мои домыслы, я же не вижу твой код. Но инфа 100%, ты не проверяешь права пользователя в серверном обработчике AJAX. Иначе твой вопрос вообще не появился бы.

    И это очень нездо́рово!

    Добавлено спустя 8 минут 48 секунд:
    Re: Проверка источника AJAX запроса внутри вызываемого скрипта
    Достоверно можно узнать только IP пользователя. И то, скорее IP последнего сегмента в цепочке прокси. Адрес страницы-источника точно недостоверен.

    Есть методы защиты запросов через различные токены, но, бро, это просто вариации на тему авторизации!
    Пользователь, а не скрипт, должен быть (1) идентифицирован и (2) иметь право на действие.
     
  7. lastdays

    lastdays Активный пользователь

    С нами с:
    27 сен 2012
    Сообщения:
    410
    Симпатии:
    74
    Re: Проверка источника AJAX запроса внутри вызываемого скрип

    Вопрос из разряда, как правильно присунуть, сверху или снизу? но эффект то один и тот же : "попадание в дырку".

    Я выделил твою следующую проблему, меняй подход и реализуй иначе. Серьёзно.
     
  8. Alex5646

    Alex5646 Новичок

    С нами с:
    29 дек 2015
    Сообщения:
    277
    Симпатии:
    4
    Адрес:
    От верлюда
    Re: Проверка источника AJAX запроса внутри вызываемого скрип

    Забей в сессию случайную строку, и отправляй эту строку с любыми запросами AJAX, POST, PUT. И проверяй если строка из сессии и строка из запроса не совпадают, значит запрос кто то пытается подставить.
     
  9. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    Re: Проверка источника AJAX запроса внутри вызываемого скрип

    Как будто сложно посмотреть в клиенте отправляемые данные и найти эту случайную строку. :)
     
  10. Alex5646

    Alex5646 Новичок

    С нами с:
    29 дек 2015
    Сообщения:
    277
    Симпатии:
    4
    Адрес:
    От верлюда
    Re: Проверка источника AJAX запроса внутри вызываемого скрип

    Тогда ещё проверять HTTP_REFERER.
     
  11. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Re: Проверка источника AJAX запроса внутри вызываемого скрип

    его тоже можно поменять, читай про CSRF
     
  12. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    Re: Проверка источника AJAX запроса внутри вызываемого скрип

    только csRF
     
  13. Alex5646

    Alex5646 Новичок

    С нами с:
    29 дек 2015
    Сообщения:
    277
    Симпатии:
    4
    Адрес:
    От верлюда
    Re: Проверка источника AJAX запроса внутри вызываемого скрип

    Я читал но видимо не хрена не понял
    http://raz0r.name/articles/zashhita-ot-csrf/ Почти везде описывается этот метод как защита от CSFR

    Добавлено спустя 2 минуты 9 секунд:
    Re: Проверка источника AJAX запроса внутри вызываемого скрипта
    Зачем его тогда используют, если он не помогает? Тот же csrf_field() из laravel.
     
  14. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.115
    Симпатии:
    1.244
    Адрес:
    там-сям
    Re: Проверка источника AJAX запроса внутри вызываемого скрип

     
  15. Alex5646

    Alex5646 Новичок

    С нами с:
    29 дек 2015
    Сообщения:
    277
    Симпатии:
    4
    Адрес:
    От верлюда
    Re: Проверка источника AJAX запроса внутри вызываемого скрип

    artoodetoo, ну а как тогда?
     
  16. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.115
    Симпатии:
    1.244
    Адрес:
    там-сям
    Re: Проверка источника AJAX запроса внутри вызываемого скрип

    Да всё так, только вдумчиво. Чтобы не получилось, что ты стоишь в защитной каске и при этом голый.

    Добавлено спустя 9 минут 9 секунд:
    Re: Проверка источника AJAX запроса внутри вызываемого скрипта
    http://en.wikipedia.org/wiki/Cross-site_request_forgery#Prevention

    viewtopic.php?f=5&t=42906#p343297