Безопасность скриптов для AJAX

HatoL

Профессор
Регистрация
5 Фев 2008
Сообщения
206
Реакции
36
Есть сайтик, который делает AJAX-запросы к PHP-скрипту. Вообще AJAX в данном случае используется в качестве автокомплетера (ну как в гугле — вводите начало предложения, а вам уже варианты предлагаются).

Так вот, сделал такую штуку первый раз и думаю насчет безопасности. Ясно, что сделать запрет на выполнение скрипта всем, кроме тех, кто делает его с сайта невозможно. Браузер делает запрос от лица посетителя, запрос должен обязательно произойти и вернуть результат. Получается защиту невозможно сделать, потому как все, что происходит на стороне клиента, можно подделать. Правильно?
 
Есть сайтик, который делает AJAX-запросы к PHP-скрипту
Ответ в теме. А в PHP скрипте что происходит? Видимо проверка в том числе...
Да и сделать запреты на запросы извне возможно
 
А от чего нужна защита?

От слишком частых запросов - веди счетчик на сервере и бань.
От csrf - введи периодически изменяющиеся токены

От вызова скрипта по url (просто адрес в строку подставить)
- проверяй метод передачи запроса (ставь POST) и заголовки:
X-Ajax-Referer: Для просмотра ссылки Войди или Зарегистрируйся
X-Requested-With: XMLHttpRequest
 
Получается защиту невозможно сделать, потому как все, что происходит на стороне клиента, можно подделать. Правильно?
как бы правильно, но тем не менее, вы можете и должны проверять:
1. реферер и урл откуда запросили
2. тип запроса ($_SERVER['HTTP_X_REQUESTED_WITH'], не на всех серверах работает)
3. соответствие сессий, т.е. в "вызавающем" файле делаем примерно так
PHP:
session_start();
$_SESSION['safe'] = md5(time().'блаблабла_наша_соль_для_сессии_блаблабла');
$my_session = $_SESSION['safe'];
и передаем ее в "вызываемый" файл, в котором уже проверяем соответствие...

кроме того, настоятельно рекомендую в след. раз пользоваться поиском - чем к примеру ваш вопрос отличается от того что задан здесь:
/threads/229052/
 
Добавляем Javascript-ом параметр (либо куку), который завязан на время + какой-либо секретный ключ с сервера итд - на сервере проверяем его наличие.
Javascript прогоняем через обфускатор. Далеко не каждый первый парсер сможет полностью корректно сэмулировать Javascript.
 
Назад
Сверху