Broken Access Control
Отсутствие или ошибки проверок прав позволяют пользователю выполнять чужие действия.
Сигнатура
Broken Access ControlBroken Access Control (нарушение контроля доступа) — категория №1 в OWASP Top 10. Возникает, когда сервер не проверяет, имеет ли пользователь право на запрошенное действие или ресурс.
Как защититься: проверяйте права на сервере для каждого запроса (а не только скрывайте кнопки в UI), применяйте принцип «запрещено по умолчанию», централизуйте логику авторизации, покрывайте права тестами.
# Опасно: эндпоинт не проверяет владельца
def delete_post(post_id):
db.delete_post(post_id)
# Безопасно: проверка прав на сервере
def delete_post(user, post_id):
post = db.get_post(post_id)
if post.author_id != user.id and not user.is_admin:
raise Forbidden("Нет прав на удаление")
db.delete_post(post_id)