MrPi#: 3. Это же токен, который при обновлении страницы генерится новый? В чем это бага и утечка? То, что и так знает любой клиент зайдя на сайт? Если это токен восстановления,то да, но там же токен валидации форм? Не, безусловно get на токен моветон и антипаттерн, но аларма здесь не вижу.
Не совсем понимаю сути претензии :) Полагаешь что на этот момент не стоило обращать внимания? Сам же пишешь, что "моветон". Имхо логично.
MrPi#: С логами зачем вообще в old его перемещать? Можно же как date(dd--mm-yyyy) записывать. Тогда восстановить день можно. Создать крон задачу на удаление раз в неделю или архивировать. В целом считаю, что если 10мб забрать логами, то это уровень дев, а не прод)) 1 файл в день, разрабы прочтут, пофиксят
Это вообще не относится ни как к этой оценке . Это уже мое решение. В оценке лишь про гонку указано. что действительно может быть при таком подходе. Но я сознательно забил на это еще когда принимал решение.
Тут суть в моем таком решении. Да можно по дням, можно логротейт настроить. Если честно пока не решил на 100% как в конечном итоге хочу видеть. У каждого подхода есть свои недостатки. по дням у меня тоже были на проектах :). Тут решил так. Все же я сомневаюсь, что завтра гиганты индустрии начнут писать хайлоад проекты на моем фреймворке :) Думаю для данного этапа развития фреймворка решение правильное (не надо парится и знать что надо настроить логротейт или скрипит на крон.... (со скриптами вообще глубже буду продумывать когда буду реализовывать cli сторону фреймворка. вполне возможно там и про чистку/ротацию логов подумаю и прочие "чистки")
Короче, если интересно посмотри обзоры :) Я ей не пользуюсь - интеграцию в РФ прикрыли. Да и ИИ я пока не особо пользуюсь. Спросил потому что Слай активно пользуется ИИ. А я о ней узнал от двух разных людей кто работает с ИИ.
Терминал конкретно в этой теме не причем . просто, например, я пользуюсь терминалом. Мне там удобно. Да и на сервера ходить. А тут терминал с интегрированными ии.
MrPi#: Со скрина непонятно где уязвимость раскрытия. Фрагмент кода бы увидеть.
Ну тут надо уже искать. я тогда в другой ветке это делал и ее всю схлопнул в один киммит. ну вот маленький пример из отчета
2. Information Disclosure — ExceptionMiddleware отдаёт тексты исключений клиенту (CRITICAL)
Файл: src/Middleware/ExceptionMiddleware.php
return $this->buildResponse($exception->getMessage())
->setStatus(ResponseStatus::INTERNAL_SERVER_ERROR);
Текст любого исключения (включая \Throwable) напрямую возвращается в HTTP-ответ. Это раскрывает:
- Пути файловой системы (Unable to open '/var/www/app/var/log/error.log')
- Имена таблиц/колонок БД из будущих SQL-ошибок
- Внутренние имена классов и структуру приложения
- Потенциально — строки подключения и учётные данные из PDO-исключений
Комментарий в коде говорит «фильтрация — ответственность разработчика», но это должно быть
безопасным по умолчанию.
3. CSRF-токен в GET-параметрах (HIGH)
CSRF-токен принимается через GET-параметры. Это означает: - Токен попадёт в URL (?csrf_token=abc123...), а значит: - В логи веб-сервера (access.log) - В заголовок Referer при переходе по ссылкам - В историю браузера - В логи прокси-серверов - Это фактически обнуляет CSRF-защиту, так как токен может быть легко перехвачен
8. Ротация логов — гонка и перезапись (MEDIUM)
Файл: src/Logging/Handlers/StreamHandler.php
if (file_exists($stream) && filesize($stream) > $maxFileSize) {
rename($stream, $stream . '.old'); // ← хранится только 1 архив
}
- Race condition: между file_exists/filesize и rename другой процесс может записать в файл
- Хранится только один архивный файл (.old), предыдущий архив удаляется без предупреждения —
потеря логов в production
- Нет блокировки файла при записи (fwrite без flock) — возможна перемешивание строк логов при
конкурентных запросах
Sly32#: Если хочешь - сделаю тоже самое. Не пожалею даже токенов для claude 4.7/gpt-5.5. Причем тебе сразу будет ПР с исправлениями и подробный отчет по ФВ в виде маркдаун файла - как план улучшений. Только в след месяце - в этом сильно потратился на токены. Просто напомни в начале месяца.
Скорее реальные: пару попались "спорных". т.е в моем понимании в универсальном фреймворке эти две должны решаться на другом уровне проекта, иначе фреймворк будет "резать крылья разработчикам" :) Пара была действительно критических - проморгал. Были такие, просто обусловлены тем, что еще идет разработка и я тупо еще не сделал.
Но тут нужно так же понимать, что цель видео была просто показать возможности (неизвестный фреймворк и его анализ), "отчет по уязвимостям" - конкретно такой задачи не было. т.е. если озадачится и даже, если быть точным, сформировать определенный "чек лист" с достаточно узкими задачами (и поиск уязвимостей как одна из таких). то вполне себе интересный и полезный инструмент. Так что если привычная пирамида тестирования, мутационное тестирование и прогон через ИИ - уменьшаем шанс прорыва бага на прод.
3. Это же токен, который при обновлении страницы генерится новый? В чем это бага и утечка? То, что и так знает любой клиент зайдя на сайт? Если это токен восстановления,то да, но там же токен валидации форм? Не, безусловно get на токен моветон и антипаттерн, но аларма здесь не вижу.
Не совсем понимаю сути претензии :) Полагаешь что на этот момент не стоило обращать внимания? Сам же пишешь, что "моветон". Имхо логично.
С логами зачем вообще в old его перемещать? Можно же как date(dd--mm-yyyy) записывать. Тогда восстановить день можно. Создать крон задачу на удаление раз в неделю или архивировать. В целом считаю, что если 10мб забрать логами, то это уровень дев, а не прод)) 1 файл в день, разрабы прочтут, пофиксят
Это вообще не относится ни как к этой оценке . Это уже мое решение. В оценке лишь про гонку указано. что действительно может быть при таком подходе. Но я сознательно забил на это еще когда принимал решение.
Тут суть в моем таком решении. Да можно по дням, можно логротейт настроить. Если честно пока не решил на 100% как в конечном итоге хочу видеть. У каждого подхода есть свои недостатки. по дням у меня тоже были на проектах :). Тут решил так. Все же я сомневаюсь, что завтра гиганты индустрии начнут писать хайлоад проекты на моем фреймворке :) Думаю для данного этапа развития фреймворка решение правильное (не надо парится и знать что надо настроить логротейт или скрипит на крон.... (со скриптами вообще глубже буду продумывать когда буду реализовывать cli сторону фреймворка. вполне возможно там и про чистку/ротацию логов подумаю и прочие "чистки")
Так это любая cli.
Со скрина непонятно где уязвимость раскрытия. Фрагмент кода бы увидеть.
Ну тут надо уже искать. я тогда в другой ветке это делал и ее всю схлопнул в один киммит. ну вот маленький пример из отчета
2. Information Disclosure — ExceptionMiddleware отдаёт тексты исключений клиенту (CRITICAL) Файл: src/Middleware/ExceptionMiddleware.php return $this->buildResponse($exception->getMessage()) ->setStatus(ResponseStatus::INTERNAL_SERVER_ERROR); Текст любого исключения (включая \Throwable) напрямую возвращается в HTTP-ответ. Это раскрывает: - Пути файловой системы (Unable to open '/var/www/app/var/log/error.log') - Имена таблиц/колонок БД из будущих SQL-ошибок - Внутренние имена классов и структуру приложения - Потенциально — строки подключения и учётные данные из PDO-исключений Комментарий в коде говорит «фильтрация — ответственность разработчика», но это должно быть безопасным по умолчанию.
3. CSRF-токен в GET-параметрах (HIGH)
Файл: src/Middleware/CsrfMiddleware.php
$tokenFromRequest = trim(
$request->get->getString(self::CSRF_TOKEN_NAME, '') // ← GET параметр!
?: $request->post->getString(self::CSRF_TOKEN_NAME, '')
?: $request->headers->getString(self::CSRF_TOKEN_HEADER, ''),
);
CSRF-токен принимается через GET-параметры. Это означает:
- Токен попадёт в URL (?csrf_token=abc123...), а значит:
- В логи веб-сервера (access.log)
- В заголовок Referer при переходе по ссылкам
- В историю браузера
- В логи прокси-серверов
- Это фактически обнуляет CSRF-защиту, так как токен может быть легко перехвачен
8. Ротация логов — гонка и перезапись (MEDIUM) Файл: src/Logging/Handlers/StreamHandler.php if (file_exists($stream) && filesize($stream) > $maxFileSize) { rename($stream, $stream . '.old'); // ← хранится только 1 архив } - Race condition: между file_exists/filesize и rename другой процесс может записать в файл - Хранится только один архивный файл (.old), предыдущий архив удаляется без предупреждения — потеря логов в production - Нет блокировки файла при записи (fwrite без flock) — возможна перемешивание строк логов при конкурентных запросах
Если хочешь - сделаю тоже самое. Не пожалею даже токенов для claude 4.7/gpt-5.5. Причем тебе сразу будет ПР с исправлениями и подробный отчет по ФВ в виде маркдаун файла - как план улучшений. Только в след месяце - в этом сильно потратился на токены. Просто напомни в начале месяца.
Каким образом? С онлайн моделью?
Вот пример из сводки этого отчета
Уязвимости реальные или надуманные?
Скорее реальные: пару попались "спорных". т.е в моем понимании в универсальном фреймворке эти две должны решаться на другом уровне проекта, иначе фреймворк будет "резать крылья разработчикам" :) Пара была действительно критических - проморгал. Были такие, просто обусловлены тем, что еще идет разработка и я тупо еще не сделал.
Но тут нужно так же понимать, что цель видео была просто показать возможности (неизвестный фреймворк и его анализ), "отчет по уязвимостям" - конкретно такой задачи не было. т.е. если озадачится и даже, если быть точным, сформировать определенный "чек лист" с достаточно узкими задачами (и поиск уязвимостей как одна из таких). то вполне себе интересный и полезный инструмент. Так что если привычная пирамида тестирования, мутационное тестирование и прогон через ИИ - уменьшаем шанс прорыва бага на прод.
ЗЫ. А вот создание своей LLM мне интересно. Но с тобой каши не сваришь..
Таки с фреймворком тема все переключился на LLM?