Записывайте решения и реальные действия в объёме, достаточном для расследования, но не складывайте без разбора весь контекст
Статьи
Ограничьте продолжающийся канал утечки, сохраните необходимые доказательства и определите затронутые данные
Используйте уникальный нерабочий маркер вместо настоящего ключа и проверяйте все каналы вывода
Повторите критические сценарии доступа и действий на той же версии приложения
Проверяйте защиту одновременно на опасных и допустимых задачах
Не записывайте выводы из внешнего текста в долговременные правила без проверки происхождения и области действия
Секрет должен оставаться в доверенной части приложения, которая выполняет разрешённую операцию
Проверяйте адрес назначения и сетевой доступ на стороне загрузчика
Считайте сгенерированный HTML недоверенным вводом
Предпочитайте узкие операции с фиксированными аргументами произвольной командной строке
Запрет записи защищает от части изменений базы, но не ограничивает чтение чужих строк и чувствительных столбцов
Опишите назначение, единицы измерения и опасные условия параметров, а критичные ограничения закрепите на сервере
Не используйте идентификатор сессии как единственное доказательство прав на бизнес-данные
Передавайте безопасный идентификатор трассировки между слоями и записывайте стадии операции
Не считайте localhost достаточной защитой HTTP-интеграции
Считайте изменение обязательных полей и смысла ответа изменением контракта
Определяйте доступный tenant из доверенного контекста авторизации и проверяйте каждый объект на сервере
Проверяйте, для какого ресурса выдан токен, и не считайте один bearer token универсальным пропуском ко всем подключённым системам
Сокращайте ответ по бизнес-задаче: фильтруйте, ограничивайте поля и давайте управляемое продолжение
Сделайте выбор инструмента различимым по назначению и контексту сервера
