Раскрытие информации в ошибках
Подробные сообщения об ошибках раскрывают структуру системы и помогают атакующему.
Сигнатура
Information disclosure via errorsРаскрытие информации через ошибки происходит, когда пользователю показывают трейсбеки, SQL-запросы, версии ПО или пути файлов. Эти детали помогают атакующему построить целенаправленную атаку.
Как защититься: показывайте пользователю обобщённое сообщение и идентификатор ошибки, а детали пишите только в защищённый лог; отключайте debug в продакшене; не раскрывайте в ответах о входе, существует ли учётная запись.
import logging
def handle_error(exc):
# Детали — в лог, пользователю — обобщённо
logging.exception("internal error")
return {"error": "Внутренняя ошибка", "id": new_error_id()}, 500