Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Проверка источника AJAX запроса внутри вызываемого скрипта
Форумы портала PHP.SU » » HTTP и PHP » Проверка источника AJAX запроса внутри вызываемого скрипта

Страниц (1): [1]
 

1. shurik_7866 - 14 Января, 2016 - 10:15:23 - перейти к сообщению
Проблема следующая

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

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

Для простоты понимания проблемы
Если AJAX запрос с методом GET то зарегистрированному пользователю для выполнения своего собственного запроса достаточно лишь виполнить следующий HTTP запрос http://www[dot]site/inner_path/execu[dot][dot].php?query=запрос пользователя.
Если запрос с методом POST то надо написать простенький HTML документ в котором будет послан AJAX запрос.
Единственное что этому припятствует это знание структуры базы данных.
2. DelphinPRO - 14 Января, 2016 - 11:13:56 - перейти к сообщению
прямо вот так запрос и приходит? зачем? почему не отдельные параметры?
(Добавление)
по сабжу - проверить достоверно нельзя. любой запрос можно подделать.
3. Faraon-san - 14 Января, 2016 - 11:31:15 - перейти к сообщению
можешь проверять на заголовок
CODE (htmlphp):
скопировать код в буфер обмена
  1. X-Requested-With: XMLHttpRequest
  2.  

но как и говорил DelphinPRO подделать можно любой запрос, можно максимально усложнить это, но все равно смогут подделать.
4. Flash_PR - 14 Января, 2016 - 11:45:20 - перейти к сообщению
Интересный для меня вопрос, а именно передача данных и защита от их подмены. Конечно передавать готовый запрос не очень хорошо, передай id записи в таблице. Для защиты от подмены id (если это принципиально) я добавлял еще один параметр хеш id с солью естественно. и в скрипте проверял хэш пришедших данные(id) с пришедшим хэшом. Но возможно это не самое лучшее решение, гуру может быть подскажут как лучше?
5. DelphinPRO - 14 Января, 2016 - 13:52:26 - перейти к сообщению
Faraon-san пишет:
X-Requested-With

Следует помнить, что этот заголовок не отправляется браузером автоматически при выполнении аякс запроса (например когда вы сами пишете функцию с использованием XMLHttpRequest). Этот заголовок добавляет библиотека jquery (и другие)
Ну и раз это обычный заголовок, не составляет никакого труда послать его в подделанном запросе.

2 ТС
Используйте, стандартные в таких случаях механизмы защиты от подделки межсайтовых запросов (CSRF) - секретные токены.

Вопрос, зачем нужно передавать в запросе SQL в чистом виде, остается открытым.

 

Powered by ExBB FM 1.0 RC1