6 главных типов веб-уязвимостей, о которых должен знать каждый бэкендер
https://habr.com/ru/companies/spaceweb/articles/814725/
https://habr.com/ru/companies/spaceweb/articles/814725/
Хабр
6 главных типов веб-уязвимостей, о которых должен знать каждый бэкендер
Привет, Хабр! На связи Виталий Киреев, руководитель R&D SpaceWeb. В статье я расскажу про главные уязвимости Server Side, покажу примеры и объясню, как защищать данные. Принцип отбора...
Как отладить любую команду Symfony, просто передав '-x'
Подход позволяет запускать любую Symfony команду в режиме отладки, даже если она не принадлежит вашему приложению, например, команды Doctrine или стандартные команды Symfony.
Это более быстрый и удобный способ отладки команд через добавление флага -x или --xdebug при вызове команды. После обнаружения этого флага слушатель событий перезапускает команду с необходимыми переменными среды для работы xDebug, используя функцию passthru().
Структура слушателя событий детально объяснена далее. Он реализует интерфейс ConsoleEvents::COMMAND и прослушивает событие configure для всех команд. Если обнаруживается флаг -x, команда перезапускается с установленными переменными среды для xDebug.
Код слушателя включает проверки типов и корректное перезапускание команды, а также учитывает ситуации, когда команда вызывается через HelpCommand.
Такой подход делает отладку Symfony команд более удобной и быстрой, особенно при работе в командной строке.
Подход позволяет запускать любую Symfony команду в режиме отладки, даже если она не принадлежит вашему приложению, например, команды Doctrine или стандартные команды Symfony.
Это более быстрый и удобный способ отладки команд через добавление флага -x или --xdebug при вызове команды. После обнаружения этого флага слушатель событий перезапускает команду с необходимыми переменными среды для работы xDebug, используя функцию passthru().
Структура слушателя событий детально объяснена далее. Он реализует интерфейс ConsoleEvents::COMMAND и прослушивает событие configure для всех команд. Если обнаруживается флаг -x, команда перезапускается с установленными переменными среды для xDebug.
Код слушателя включает проверки типов и корректное перезапускание команды, а также учитывает ситуации, когда команда вызывается через HelpCommand.
Такой подход делает отладку Symfony команд более удобной и быстрой, особенно при работе в командной строке.
DEV Community
How to debug ANY Symfony command simply passing `-x`
Debugging a Symfony console command requires setting some environment variables (depending on your...
Совет по Laravel 💡
Данные загружаются быстрее, если целевое значение является целым числом.
Используйте
@phpshka
Данные загружаются быстрее, если целевое значение является целым числом.
Используйте
𝘄𝗵𝗲𝗿𝗲𝗜𝗻𝘁𝗲𝗴𝗲𝗿𝗜𝗻𝗥𝗮𝘄()
вместо метода 𝘄𝗵𝗲𝗿𝗲𝗜𝗻()
, чтобы быстрее загружать данные, когда целевое значение является целым числом.@phpshka
Как реализовать паттерн проектирования «Адаптер» на PHP, и какие распространенные случаи его использования?
В PHP вы можете реализовать паттерн «Адаптер», чтобы обеспечить работу несовместимых интерфейсов вместе.
В нашем примере:
Adaptee — класс с несовместимым интерфейсом.
Target — интерфейс, ожидаемый клиентом.
Adapter — класс, который адаптирует Adaptee к интерфейсу Target.
Распространенные случаи использования паттерна Адаптер включают:
🟢Интеграция с легаси-кодом: Когда у вас есть старый код с другим интерфейсом, который нужно использовать в новой системе.
🟢Использование сторонних библиотек: Когда вы хотите использовать стороннюю библиотеку, которая не соответствует требуемому интерфейсу.
🟢Мокирование объектов при тестировании: Когда нужно создать мок-объекты, которые реализуют определенный интерфейс для целей тестирования.
🟢Масштабируемость системы: Когда нужно переключаться между различными реализациями функциональности без изменения кода клиента.
#вопросы_с_собеседований
В PHP вы можете реализовать паттерн «Адаптер», чтобы обеспечить работу несовместимых интерфейсов вместе.
В нашем примере:
Adaptee — класс с несовместимым интерфейсом.
Target — интерфейс, ожидаемый клиентом.
Adapter — класс, который адаптирует Adaptee к интерфейсу Target.
Распространенные случаи использования паттерна Адаптер включают:
🟢Интеграция с легаси-кодом: Когда у вас есть старый код с другим интерфейсом, который нужно использовать в новой системе.
🟢Использование сторонних библиотек: Когда вы хотите использовать стороннюю библиотеку, которая не соответствует требуемому интерфейсу.
🟢Мокирование объектов при тестировании: Когда нужно создать мок-объекты, которые реализуют определенный интерфейс для целей тестирования.
🟢Масштабируемость системы: Когда нужно переключаться между различными реализациями функциональности без изменения кода клиента.
#вопросы_с_собеседований
TransformersPHP
Инструментарий для PHP-разработчиков, позволяющий легко добавлять возможности машинного обучения в свои проекты. Пост-интро.
Инструментарий для PHP-разработчиков, позволяющий легко добавлять возможности машинного обучения в свои проекты. Пост-интро.
GitHub
GitHub - CodeWithKyrian/transformers-php: Transformers PHP is a toolkit for PHP developers to add machine learning magic to their…
Transformers PHP is a toolkit for PHP developers to add machine learning magic to their projects easily. - GitHub - CodeWithKyrian/transformers-php: Transformers PHP is a toolkit for PHP developer...
4 сайта с бесплатными шаблонами для Laravel
HTMLrev: Огромная коллекция бесплатных HTML-шаблонов, в том числе множество для панелей управления Laravel. Часто обновляются и позволяют легко просматривать по категориям.
Creative Tim: Известный своими готовыми к использованию шаблонами, Creative Tim предоставляет UI-киты, административные панели и системы дизайна для нескольких архитектур, включая Laravel. Их шаблоны поставляются с высококачественным кодом и документацией.
ThemeSelection: Предлагает как бесплатные, так и платные UI-киты и шаблоны панелей управления. Хотя доступно всего несколько бесплатных вариантов, они отличаются замечательным качеством и сравнимы с премиальными пакетами.
JustBoil: JustBoil специализируется на шаблонах панелей управления для различных библиотек, включая Bulma и Tailwind. Их бесплатные шаблоны профессионально разработаны, написаны и документированы, предлагая множество компонентов для создания панелей управления.
HTMLrev: Огромная коллекция бесплатных HTML-шаблонов, в том числе множество для панелей управления Laravel. Часто обновляются и позволяют легко просматривать по категориям.
Creative Tim: Известный своими готовыми к использованию шаблонами, Creative Tim предоставляет UI-киты, административные панели и системы дизайна для нескольких архитектур, включая Laravel. Их шаблоны поставляются с высококачественным кодом и документацией.
ThemeSelection: Предлагает как бесплатные, так и платные UI-киты и шаблоны панелей управления. Хотя доступно всего несколько бесплатных вариантов, они отличаются замечательным качеством и сравнимы с премиальными пакетами.
JustBoil: JustBoil специализируется на шаблонах панелей управления для различных библиотек, включая Bulma и Tailwind. Их бесплатные шаблоны профессионально разработаны, написаны и документированы, предлагая множество компонентов для создания панелей управления.
Media is too big
VIEW IN TELEGRAM
Pest-плагин для стресс-тестирования
Стресс-тестирование - это тип тестирования, который проверяет стабильность и надежность вашего приложения в реалистичных или экстремальных условиях - в зависимости от заданного сценария. Например, вы можете использовать стресс-тестирование для проверки того, что ваше приложение может обрабатывать большое количество запросов или что оно может обрабатывать большой объем данных.
https://pestphp.com/docs/stress-testing
Стресс-тестирование - это тип тестирования, который проверяет стабильность и надежность вашего приложения в реалистичных или экстремальных условиях - в зависимости от заданного сценария. Например, вы можете использовать стресс-тестирование для проверки того, что ваше приложение может обрабатывать большое количество запросов или что оно может обрабатывать большой объем данных.
https://pestphp.com/docs/stress-testing
Forwarded from Kali Linux
Эксплойт доступен каждому, поэтому для защиты нужно срочно обновить PHP до последней версии.
Исследователи безопасности из тайваньской компании DEVCORE обнаружили серьёзную уязвимость, затрагивающую установки PHP на Windows в режиме CGI. Получившая идентификатор CVE-2024-4577 (рейтинг CVSS пока не определён), проблема позволяет злоумышленникам производить подстановку аргументов командной строки, что способно привести к удалённому выполнению кода (RCE).
Как сообщают специалисты DEVCORE, проблема «растёт» из другой уязвимости — CVE-2012-1823, так как свежевыявленный баг позволяет обойти внедрённую от неё защиту с помощью определённых последовательностей символов.
CVE-2024-4577 затрагивает все версии PHP, установленные в операционной системе Windows, а именно:
— с версии PHP 8.3 по 8.3.8;
— с версии PHP 8.2 по 8.2.20;
— с версии PHP 8.1 по 8.1.29.
Из-за повсеместного использования PHP в веб-экосистеме, а также простоты использования уязвимости, специалисты классифицировали её как критическую и незамедлительно сообщили о ней официальной команде PHP. Отчёт об уязвимости был опубликован уже после выхода исправленной версии PHP, доступного для скачивания на официальном сайте.
@linuxkalii
Please open Telegram to view this post
VIEW IN TELEGRAM
ComposerRequireChecker
Инструмент CLI для проверки того, использует ли конкретный пакет composer импортированные символы, которые не входят в его прямые зависимости от composer.
Инструмент CLI для проверки того, использует ли конкретный пакет composer импортированные символы, которые не входят в его прямые зависимости от composer.
GitHub
GitHub - maglnet/ComposerRequireChecker: A CLI tool to check whether a specific composer package uses imported symbols that aren't…
A CLI tool to check whether a specific composer package uses imported symbols that aren't part of its direct composer dependencies - maglnet/ComposerRequireChecker
⚡️ Совет по Laravel
Данные загружаются быстрее, если целевое значение является целым числом.
Используйте
@phpshka
Данные загружаются быстрее, если целевое значение является целым числом.
Используйте
𝘄𝗵𝗲𝗿𝗲𝗜𝗻𝘁𝗲𝗴𝗲𝗿𝗜𝗻𝗥𝗮𝘄()
вместо метода 𝘄𝗵𝗲𝗿𝗲𝗜𝗻()
, чтобы быстрее загружать данные, когда целевое значение является целым числом.@phpshka
Что такое «PHP Extension Community Library» (PECL), и как её использовать для расширения функциональности PHP?
Библиотека сообщества расширений PHP (PECL) служит репозиторием для PHP-расширений. PHP-расширения представляют собой модули, написанные на C, которые могут быть динамически загружены в PHP для предоставления дополнительной функциональности. Эти расширения могут взаимодействовать с PHP на более низком уровне, чем обычные скрипты PHP, позволяя разработчикам использовать системные ресурсы, взаимодействовать с базами данных и выполнять другие задачи, которые могут быть более эффективно реализованы на языке более низкого уровня.
Цель PECL заключается в предоставлении централизованного места для разработчиков, где они могут делиться и распространять PHP-расширения. Это гарантирует, что разработчики PHP могут легко находить, устанавливать и использовать расширения для расширения возможностей PHP.
Чтобы использовать PECL для расширения функциональности PHP, обычно следуют следующим шагам:
Установка PECL: Убедитесь, что PECL установлен на вашей системе. Обычно он поставляется вместе с установками PHP, но в зависимости от вашей конфигурации может потребоваться установить его отдельно.
Поиск расширений: Просмотрите веб-сайт PECL или используйте команду pecl search, чтобы найти расширения, предоставляющие необходимую функциональность.
Установка расширений: После того как вы нашли нужное расширение, вы можете установить его с помощью команды pecl install, за которой следует имя расширения.
Включение расширения: После установки расширения вам нужно включить его в файле конфигурации PHP (php.ini). Вы можете сделать это вручную, добавив строку вроде extension=имя_расширения.so в файл php.ini, или с помощью команды phpenmod, если вы используете систему с хранилищем расширений и приложений PHP (PEAR)
Перезапуск веб-сервера: После включения расширения необходимо перезапустить веб-сервер (например, Apache или Nginx), чтобы изменения вступили в силу.
Тестирование расширения: Наконец, вы можете протестировать функциональность, предоставляемую расширением, в ваших PHP-скриптах. Вы можете использовать функции или классы расширения, как это указано в его документации.
#вопросы_с_собеседований
Библиотека сообщества расширений PHP (PECL) служит репозиторием для PHP-расширений. PHP-расширения представляют собой модули, написанные на C, которые могут быть динамически загружены в PHP для предоставления дополнительной функциональности. Эти расширения могут взаимодействовать с PHP на более низком уровне, чем обычные скрипты PHP, позволяя разработчикам использовать системные ресурсы, взаимодействовать с базами данных и выполнять другие задачи, которые могут быть более эффективно реализованы на языке более низкого уровня.
Цель PECL заключается в предоставлении централизованного места для разработчиков, где они могут делиться и распространять PHP-расширения. Это гарантирует, что разработчики PHP могут легко находить, устанавливать и использовать расширения для расширения возможностей PHP.
Чтобы использовать PECL для расширения функциональности PHP, обычно следуют следующим шагам:
Установка PECL: Убедитесь, что PECL установлен на вашей системе. Обычно он поставляется вместе с установками PHP, но в зависимости от вашей конфигурации может потребоваться установить его отдельно.
Поиск расширений: Просмотрите веб-сайт PECL или используйте команду pecl search, чтобы найти расширения, предоставляющие необходимую функциональность.
Установка расширений: После того как вы нашли нужное расширение, вы можете установить его с помощью команды pecl install, за которой следует имя расширения.
Включение расширения: После установки расширения вам нужно включить его в файле конфигурации PHP (php.ini). Вы можете сделать это вручную, добавив строку вроде extension=имя_расширения.so в файл php.ini, или с помощью команды phpenmod, если вы используете систему с хранилищем расширений и приложений PHP (PEAR)
Перезапуск веб-сервера: После включения расширения необходимо перезапустить веб-сервер (например, Apache или Nginx), чтобы изменения вступили в силу.
Тестирование расширения: Наконец, вы можете протестировать функциональность, предоставляемую расширением, в ваших PHP-скриптах. Вы можете использовать функции или классы расширения, как это указано в его документации.
#вопросы_с_собеседований
Если вы хотите показать «1 comment», но «2 commentS» с формой множественного числа в зависимости от количества, используйте `
str()->plural()
`.Вы также можете использовать его с помощником `
str()
` или с классом `Str::
`.На ваше усмотрение.
https://laravel.com/docs/11.x/strings#method-str-plural
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Как использовать Eager loading в Laravel?
Eager loading в Laravel — это способ предварительной загрузки связанных моделей, чтобы уменьшить количество запросов к базе данных и повысить производительность приложения. При использовании ленивой загрузки (lazy loading) связанные данные загружаются только тогда, когда к ним обращаются, что может привести к множественным запросам к базе данных (проблема N+1 запросов). В то время как eager loading загружает все необходимые данные заранее, используя объединение (join) или отдельные запросы с использованием ключевого слова with.
Eager loading помогает значительно снизить нагрузку на базу данных и ускорить работу приложения за счет уменьшения количества выполняемых запросов.
#вопросы_с_собеседований
Eager loading в Laravel — это способ предварительной загрузки связанных моделей, чтобы уменьшить количество запросов к базе данных и повысить производительность приложения. При использовании ленивой загрузки (lazy loading) связанные данные загружаются только тогда, когда к ним обращаются, что может привести к множественным запросам к базе данных (проблема N+1 запросов). В то время как eager loading загружает все необходимые данные заранее, используя объединение (join) или отдельные запросы с использованием ключевого слова with.
Eager loading помогает значительно снизить нагрузку на базу данных и ускорить работу приложения за счет уменьшения количества выполняемых запросов.
#вопросы_с_собеседований
Цикл «
forelse
» в Blade.@phpshka
Please open Telegram to view this post
VIEW IN TELEGRAM