Ajax, PHP и безопасность?

#ajax #security

#ajax #Безопасность

Вопрос:

Мой вопрос заключается в том, что предположим, что в моем веб-приложении я использую ajax для вызова методов на стороне сервера, не создает ли это дыру в безопасности приложения? Например, скажем, у меня есть возможность для пользователя деактивировать учетную запись, что можно сделать, нажав кнопку. Это делается с помощью Ajax.

Итак, разве хакер не может отправить запрос на сервер для деактивации учетной записи вместо пользователя? ПОМОГИТЕ!!!

Ответ №1:

Мой вопрос заключается в том, что предположим, что в моем веб-приложении я использую ajax для вызова методов на стороне сервера, не создает ли это дыру в безопасности приложения?

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

… но вы не можете вызывать методы из клиента, вы можете только отправлять запросы к URI. Сервер может вызвать вызов метода на основе получения запроса к определенному URI.

Итак, разве хакер не может отправить запрос на сервер для деактивации учетной записи вместо пользователя?

Они могли бы, поэтому вам нужна (надежная) аутентификация / авторизация и защита CSRF (точно так же, как для запроса на отключение учетной записи, которая не связана с Ajax).

Ответ №2:

Это проблема не только с AJAX, но и с любым произвольным HTTP-запросом, который хочет аутентифицировать / поддерживать сеанс. Пользователь должен быть каким-то образом аутентифицирован, чтобы отправлять запросы, обычно это делается с помощью файлов cookie. Использование AJAX не ухудшает ситуацию, потому что это все еще HTTP-запрос.

Однако одной аутентификации недостаточно, кто-то всегда может прослушивать провод и перехватывать файл cookie аутентификации и, таким образом, перехватывать сеанс — «стать вами». Единственным решением здесь является шифрование соединения на более низком уровне уровня OSI (с использованием SSL / TLS). Вот почему вы всегда должны использовать SSL, когда дело доходит до аутентификации.

Ответ №3:

В этом руководстве по безопасности Ruby on Rails содержится отличное объяснение того, как обращаться с AJAX-запросами, которые могут быть потенциально использованы. Это не относится к RoR, поэтому концепции могут применяться к любой платформе.

Один из способов снизить риск межсайтовых запросов — использовать POST для действий, которые изменяют или удаляют данные.

Комментарии:

1. POST следует использовать для защиты от случайного изменения / удаления данных … но он не обеспечивает какой-либо существенной защиты от CSRF.