Что делает HTTP-запрос безопасным (идемпотентным)?

«Что делает HTTP-запрос безопасным (идемпотентным)?» — вопрос из категории Тестирование безопасности, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Безопасный (Safe) HTTP-метод не изменяет состояние сервера и не имеет побочных эффектов. Он предназначен только для получения данных. Идемпотентный метод при многократном выполнении оставляет сервер в том же состоянии, что и после первого вызова.

Метод Безопасный (Safe) Идемпотентный (Idempotent)
GET Да Да
HEAD Да Да
POST Нет Нет
PUT Нет Да
DELETE Нет Да

Почему это важно для тестирования? Безопасные/идемпотентные методы можно повторять без риска повредить данные, что упрощает тестирование и отладку.

Пример безопасного GET-запроса:

GET /api/v1/products HTTP/1.1
Host: example.com
Authorization: Bearer <token>

Небезопасные методы (POST, PATCH) требуют дополнительных мер защиты: HTTPS, CSRF-токены, строгую аутентификацию и валидацию входных данных.