dd3b6fb4b5
Дверь пускала http к разрешённому хосту, и тайный ключ уезжал заголовком открытым текстом — молча, без единого признака. Одной опечатки в OBZVON_ENDPOINT хватало. Теперь адрес без шифрования портал не принимает: дверь закрыта, звонка нет, причина сказана словами и лежит в журнале уровнем предупреждения. Исключение ровно одно — разработчик на своём компьютере — и устроено оно ДВУМЯ независимыми ответами, чтобы одной перепутанной настройки на боевом для утечки не хватило: 1. приложение само говорит, где живёт: спрашиваем Laravel, а не список слов. Список окружений положительный, а не «всё кроме боевого»: любое неназванное окружение обязано шифрование. 2. робот стоит на ЭТОЙ ЖЕ машине: адрес ведёт на петлю — вся сеть 127.0.0.0/8, ::1, ::ffff:127.x.x.x, имена localhost и *.localhost по RFC 6761. Определяется двоичным сравнением адреса, а не совпадением слов. Резолвер имён не зовём намеренно: он вносит в проверку безопасности неопределённость и щель между «проверили» и «пошли». Именно второй ответ и закрывает то, что владелец назвал незакрытым: одной ошибки в APP_ENV на боевом теперь мало — боевой робот петлёй не станет. На это стоит именной сторож. Тумблера «можно без шифра» нет намеренно: он и был бы той опечаткой, ради которой Р123 принято. 12 новых сторожей: четыре случая ножа приёмки ж, з, и, к; сторож на само исключение; сторож против совпадения слов вместо петли; сторож на подложное шифрование, когда проверку чужого удостоверения снимают. Каждый показан красным — починка ронялась четырьмя разными способами, и каждый раз краснело именно то, что этот способ ломает. Возврат доказан слепком со снятием невидимых знаков конца строки. Моя ошибка первой: первый сторож про журнал зеленел не по той причине — любая строка предупреждения его устраивала. Нашёлся только арифметикой прогона, потому что упал в поле ошибок, а не провалов. Переписан. Найдено и НЕ тронуто второе место того же класса: services.self_render шлёт секрет заголовком, и его дверь не проверяет ни схему, ни хост вовсе. Путь живой, боевой. Вынесено решением владельцу отдельно. Отчёт: docs/superpowers/priyomka/stroyka-6/otchyot-pomoshchnika-r123-shifrovanie-2026-08-07.md Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>