2010-06-04 2 views
17

Что произойдет, если пользователь посмотрит мой файл JavaScript, скопирует содержимое функции и отправит запрос на мой сервер с помощью AJAX? И есть ли способ правильно защитить от этого?Выполнение вызовов AJAX secure

ответ

15

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

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

+1

Ahh имеет смысл. Я просто не знал, есть ли у браузеров какая-то перекрестная защита. Спасибо, бутон. –

+0

браузер не разрешит xmlhttprequest с другого сервера/домена. Однако, если вы разрешаете запросы json-p, это может произойти, также кто-то может обмануть браузер, обрабатывать запросы на ajax, как и любые другие, как уже упоминалось. – Tracker1

9

В соответствии с кодекой нет способа предотвратить создание человеком собственного запроса Ajax, который идентичен тому, который у вас есть в вашем запросе Javascript. Междоменная защита не обязательно будет защищать вас там, поскольку они могут, если они пожелают, просто ввести Javascript в адресную строку для себя, находясь на странице вашего сайта.

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

Короче говоря, не существует способа предотвратить отправку запроса кем-либо, но вы можете помешать им делать то, что вы не хотите, чтобы они делали на вашем сервере.

+4

Означает ли это, что никогда нельзя создавать безопасную * и * обобщенную архитектуру CRUD с использованием AJAX? – dclowd9901

0

Предполагая, что вам нужна форма аутентификации:

Я думаю, вы можете сохранить сессию базы данных, чтобы проверить, если запрос исходит от подлинного пользователя для подделаны. Использовать зашифрованные файлы cookie для хранения идентификатора сеанса и передать идентификатор сеанса cookie в базу данных для проверки пользователя.

Смежные вопросы