Size: a a a

2020 May 03

EK

Evgeniy Kuvshinov in Laravel Pro
и psr4 директории падают в другое место
источник

EK

Evgeniy Kuvshinov in Laravel Pro
и он(автозагрузчик классов) преобразует имя файла в путь и по очереди подставляет базовые диры
источник

EK

Evgeniy Kuvshinov in Laravel Pro
так в исходниках composer сделано если не было оптимизаций автозагрузчика
источник

EK

Evgeniy Kuvshinov in Laravel Pro
и даже получив список классов
когда она начинает искать реализует ли класс интерфейс она начинает загружать этот класс, а точей файл из classmap
потому что что reflection что функции пхп подгружают классы по умолчанию чтобы проверить имлементит ли один класс другой интерфейс
источник

V

Vadim in Laravel Pro
Evgeniy Kuvshinov
и даже получив список классов
когда она начинает искать реализует ли класс интерфейс она начинает загружать этот класс, а точей файл из classmap
потому что что reflection что функции пхп подгружают классы по умолчанию чтобы проверить имлементит ли один класс другой интерфейс
Подгружает, но не вызывает. Это нормальная цена за удобство фичи. И твои аргументы про то, что таким образом можно вызвать опасный файл, не имеют ничего общего с реальностью. При получении данных о том, имплементит ли класс интерфейс, запускать его не надо.
источник

EK

Evgeniy Kuvshinov in Laravel Pro
ну и вот https://github.com/symfony/dependency-injection/blob/master/Loader/DirectoryLoader.php#L24
хотя это возможно не совсем тот класс
источник

EK

Evgeniy Kuvshinov in Laravel Pro
Vadim
Подгружает, но не вызывает. Это нормальная цена за удобство фичи. И твои аргументы про то, что таким образом можно вызвать опасный файл, не имеют ничего общего с реальностью. При получении данных о том, имплементит ли класс интерфейс, запускать его не надо.
подгружает он через include/require
а значит если файл содержит side effectы
источник

EK

Evgeniy Kuvshinov in Laravel Pro
они будут выполнены
источник

EK

Evgeniy Kuvshinov in Laravel Pro
а если где то просто валяется файлик он будет выполнен и может позволить произвольное выполнение кода
источник

V

Vadim in Laravel Pro
Evgeniy Kuvshinov
подгружает он через include/require
а значит если файл содержит side effectы
источник

V

Vadim in Laravel Pro
Очень похоже на то, что он загрузит не псровский класс?
источник

V

Vadim in Laravel Pro
Evgeniy Kuvshinov
а если где то просто валяется файлик он будет выполнен и может позволить произвольное выполнение кода
Если даже на минуту представить, что такое возможно, это твои проблемы
источник

V

Vadim in Laravel Pro
Ты еще скажи, что ларовский или симфоневский fs должны уметь не дать загружать вирусы или битые картинки
источник

EK

Evgeniy Kuvshinov in Laravel Pro
Vadim
Ты еще скажи, что ларовский или симфоневский fs должны уметь не дать загружать вирусы или битые картинки
я такова не говорил
источник

EK

Evgeniy Kuvshinov in Laravel Pro
но side effect от выполнения всех файлов в проекте (пусть даже в разработке)
это немного не то что хотелось бы
источник

EK

Evgeniy Kuvshinov in Laravel Pro
по крайне мере в тихую
источник

V

Vadim in Laravel Pro
Ты сказал похожее. Контейнер не должен уметь определять, опасный перед ним файл или нет. Если ты его положил, то это твои проблемы. Но контейнер, конечно же, не грузит все подряд, так что такое едва ли возможно
источник

V

Vadim in Laravel Pro
Evgeniy Kuvshinov
но side effect от выполнения всех файлов в проекте (пусть даже в разработке)
это немного не то что хотелось бы
Да не выполняет он файлы
источник

V

Vadim in Laravel Pro
Поизучай этот класс, там и про имлементацию интерфейса есть
источник

EK

Evgeniy Kuvshinov in Laravel Pro
это место где отрабатывает поиск реализаций
источник