Тело у DELETE: риски разработки
Окей, решили, что у DELETE будет тело запроса. С чем мы, как разработчики, можем столкнуться?
1️⃣ Множественное удаление
1️⃣ Ваша ролевая модель должна предусматривать, что «можно удалить всё».
2️⃣ Нагрузка на БД. Нужно осмысленно формировать запросы и проводить нагрузочные тестирования.
3️⃣ Допустим, из 4 объектов удалились первые 2, а на 3-й не хватает прав. Что будете делать? Отдавать частичный успех (207)? Откатывать удаление? Или продолжать удалять дальше?
4️⃣ DELETE должен быть идемпотентным (по стандарту). Для вас критично, если это не так?
2️⃣ Удаление подресурсов
1️⃣ Здесь снова упираемся в права. У вас должны быть права не только на каталог, но и на его объекты и действия с ними. Бывают и такие тонкости: права на работу с объектами и каталогом есть, а на изменение конкретных связей — нет. Это не всегда очевидно до тестирования.
2️⃣ Все те же проблемы, что и при массовом удалении, если оно предусмотрено.
3️⃣ Удаление по условиям
1️⃣Удар по производительности: чем сложнее фильтр, тем тяжелее запрос.
2️⃣Есть простор для инъекций. Нужно реализовать «белый список» условий и операторов, плюс заморочиться с валидацией.
3️⃣Условия могут быть массовыми → добавляем к этому риски массового удаления.
4️⃣ Подпись операции
Здесь я совсем не эксперт, но отмечу из общей практики:
1️⃣ Возможность утечки. В заголовках (Authorization, Cookie/Set-Cookie, X-Api-Key, X-Signature) обычно можно скрыть данные настройками. А вот в теле запроса это уже на вас: или не логируете тело, или делаете белый список полей.
2️⃣ Потребуются настройки прокси, чтобы они понимали, как работать «с таким сюрпризом».
3️⃣ Если вы используете готовые фреймворки для возврата ошибок, убедитесь, что они не вернут всё тело запроса в ответ целиком.
Ну и помним что не все SDK и сервисы работают с телом запроса у DELETE.
Наглядно видно, что Подпись операции и Удаление по условиям несут больше всего уязвимостей по безопасности. И поскольку у них есть хорошие альтернативы, такие решения встречаются редко.
Ну а теперь у нас есть понимание: у DELETE тело может быть, но перед этим стоит семь раз подумать. Насколько это было полезно и занимательно отметь реакциями.
👍 - Да, больше таких постов
👀 - сложно и не понятно
👎🏼 - это уже давно всем известно\я могу посмотреть это в ИИ
🤡 - я читаю ради развлекательного контента, а не вот это все
Post #461
359

- 👍 16
- 👎 1