Совет по безопасности для поста данных jquery ajax?

StackOverflow https://stackoverflow.com/questions/38421

  •  09-06-2019
  •  | 
  •  

Вопрос

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

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

Совет с благодарностью!

Это было полезно?

Решение

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

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

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

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

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

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top