Подтвердить что ты не робот

Рекомендации по безопасности для jquery ajax data post?

Я использую jquery ajax для публикации обновлений на моем сервере. Я заинтересован в том, чтобы убедиться, что я принял соответствующие меры, чтобы только мои вызовы AJAX могли публиковать данные.

Мой стек - это PHP на Apache для бэкэнда MySQL.

Совет высоко оценил!

4b9b3361

Ответ 1

Любой запрос, который вызовы AJAX на ваших страницах могут сделать, также может быть сделан кем-то вне приложения. Если все сделано правильно, вы не сможете сказать, были ли они сделаны как часть вызова AJAX из вашего webapp или вручную/другими способами.

Есть два сценария, о которых я могу подумать, когда вы говорите, что хотите убедиться, что только ваши вызовы AJAX могут отправлять данные: либо вы не хотите, чтобы злонамеренный пользователь мог отправлять данные, которые мешает другим пользовательским данным, или вы действительно хотите ограничить количество сообщений в "потоке" операции с несколькими запросами.

Если вы заинтересованы в первом случае (кто-то отправляет вредоносные данные в/в качестве другого пользователя), то решение будет одинаковым, независимо от того, используете ли вы AJAX или нет - вам просто нужно аутентифицировать пользователя с помощью любых необходимых средств - обычно через сеансовый файл cookie.

Если вы заинтересованы во втором случае, вам придется сделать что-то вроде выпуска уникального токена на каждом этапе процесса и сохранить ожидаемый токен на стороне сервера. Затем, когда запрос сделан, проверьте, есть ли соответствующая запись на стороне сервера для действия, которое выполняется, и что ожидаемые токены совпадают и что этот токен еще не используется. Если нет, вы отклоняете запрос, если есть, то вы помечаете этот токен как использованный и обрабатываете запрос.

Если вы беспокоитесь о чем-то, отличном от одного из этих двух сценариев, тогда ответ будет зависеть от более конкретных особенностей, чем вы предоставили.

Ответ 2

Используйте сеансы, чтобы гарантировать, что любые сообщения Ajax выполняются в аутентифицированном контексте. Подумайте о том, что ваш код Ajax является всего лишь другим клиентом вашего сервера, становится легче решать проблемы аутентификации таким образом.