Telegram Web
Опасности, связанные с unserialize в PHP, и как оставаться в безопасности

PHP-разработчики должны быть осторожны при использовании функции unserialize(), поскольку она может стать уязвимостью, если применять её без соответствующих мер безопасности. Эта функция преобразует сериализованную строку обратно в переменную PHP, что удобно, но при работе с неподтверждёнными данными может привести к серьёзным последствиям.

Опасности unserialize() при работе с ненадёжными данными
Одной из главных угроз является PHP Object Injection (POI). Злоумышленники могут передавать специально сформированные сериализованные объекты, что приведёт к выполнению нежелательных команд, утечке данных или даже удалению файлов. Например, если приложение десериализует пользовательские настройки без проверки входных данных, хакер может внедрить вредоносный объект и выполнить код на сервере.

Последствия атак через PHP Object Injection
Использование уязвимой десериализации может привести к:

🔸удалению файлов на сервере;
🔸выполнению произвольного кода;
🔸краже конфиденциальной информации.

Как защититься
Чтобы минимизировать риски, рекомендуется:

1. Избегать использования unserialize() для данных от пользователя. Вместо этого применять безопасные форматы, такие как JSON

2. Использовать параметр allowed_classes (начиная с PHP 7.0) для ограничения десериализуемых классов

3. Фильтровать классы при десериализации. Можно проверять, принадлежит ли объект разрешённому списку

4. Проверять и очищать входные данные. Например, использовать регулярные выражения для базовой фильтрации перед десериализацией.

👉Читать полностью
😁3👍1
Секреты стройности монолита: подходы по снятию нагрузки с БД

Была проведена успешная оптимизация нагрузки на базу данных, что также позволило значительно уменьшить её размер.

Помимо сервисов, разработанных на C++, Go и Python, в инфраструктуре остаётся монолитная система, известная как «кора», написанная на PHP. Этот компонент представляет собой обширную кодовую базу, содержащую большое количество бизнес-логики и предоставляющую данные по API для 120 сервисов.

После обновления фреймворка и версии PHP возникла необходимость решения другой важной проблемы, которая становилась всё более заметной. В тот период участились инциденты, связанные с базой данных, что требовало оперативных действий для стабилизации системы. Особенно критичными были случаи во время праздничных дней, когда нагрузка возрастала на 30–40%, а также при проведении массовых операций. Например, однажды сбои произошли в момент добавления бесплатного соуса к каждой позиции меню в крупной сети ресторанов.

🔗Хабр
👍1
📋 Переполнение буфера в Laravel: Причины, профилактика и исправления

Buffer Overflow
— это серьёзная уязвимость, при которой избыточные данные переписывают область памяти, что может привести к сбоям, выполнению вредоносного кода и даже захвату системы злоумышленником. Несмотря на то, что Laravel работает на PHP, который управляет памятью автоматически, ошибки в коде могут привести к таким атакам.

Причины возникновения Buffer Overflow в Laravel

Основные факторы, которые могут привести к этой уязвимости:

🔸недостаточная проверка пользовательских данных;
🔸отсутствие ограничений на размер вводимых данных;
🔸некорректная обработка загрузки файлов;
🔸использование потенциально опасных функций, таких как unserialize().

👉Читать подробнее
😁5🌚1
#дайджест #PHPdevjob

Вакансии PHP разработчиков уровня Junior

▪️ PHP-программист
Офис (Балашиха), КОЛЕСО.ру

▪️ PHP-программист
Удалёнка, TRINFI DIGITAL

Вакансии PHP разработчиков уровня Middle

▪️ PHP Developer
Гибрид (Санкт-Петербург), ЮДС Медиа

▪️ PHP-разработчик
Офис (Санкт-Петербург), NewGen Vision

Вакансии PHP разработчиков уровня Senior

▪️ PHP-разработчик
Офис (Барнаул) / Удалёнка, Sveak

▪️ PHP-разработчик
Удалёнка, РОСОСМОТР

Понравились вакансии?
❤️ — да
🤔 — нет
3
Какую из следующих функций следует использовать, чтобы найти родительский класс класса?
Anonymous Quiz
53%
get_parent_class()
21%
parent_class()
8%
class_parent()
18%
get_class_parent()
😁12🥱1
🌊 Wave — стартер-пак для разработки SaaS-приложений

Библиотека написана на Laravel и включает все необходимое:

— аутентификация,
— профили пользователей,
— биллинг,
— подписка,
— роли и права доступа,
— уведомления и административная панель.

Инструмент упрощает создание SaaS-приложений, предоставляя необходимые базовые компоненты и гибкие возможности для дальнейшей настройки.

💻 GitHub
1🤔1👾1
Как использовать коллекции в Laravel?

В Laravel коллекции обеспечивают плавный и удобный способ работы с массивами данных. Они более мощные и выразительные, чем простые массивы PHP, предлагая различные методы для фильтрации, отображения, преобразования и уменьшения данных. Вот как вы можете использовать коллекции в Laravel:

Создание коллекций: Вы можете создавать коллекции, используя вспомогательную функцию collect, передавая массив или объект, реализующий интерфейс IteratorAggregate:

$collection = collect([1, 2, 3, 4, 5]);


Манипуляция с коллекциями: После того как у вас есть коллекция, вы можете использовать широкий спектр методов для манипуляции данными:
map(): Преобразует каждый элемент в коллекции.
filter(): Фильтрует элементы на основе функции обратного вызова.
reduce(): Сводит коллекцию к единственному значению с использованием функции обратного вызова.
pluck(): Извлекает список конкретных атрибутов из каждого элемента.
sortBy(): Сортирует коллекцию по указанному ключу.
groupBy(): Группирует коллекцию по указанному ключу.
slice(): Извлекает часть коллекции.
И многие другие...

Цепочка методов: Вы можете соединять несколько методов вместе, чтобы выполнять сложные операции в одной строке.
👍42😁1
🪤 Избегите ловушки Enum в Laravel

В Laravel использование enum (перечислений) помогает задать фиксированный набор значений, например, для статусов, ролей или категорий. Применение enum в качестве типа данных позволяет строго контролировать значения при работе с базой данных, что делает код чище и уменьшает вероятность ошибок. Однако с ростом проекта и изменением бизнес-логики этот подход может привести к проблемам, особенно в системах с легаси-кодом.

В идеале разработка начинается с чистой базы данных, которая настраивается под текущие задачи. Это позволяет создавать точные тесты и корректировать их при появлении новых сценариев. Однако в реальных условиях проекты редко остаются неизменными: добавляются новые значения enum, старые устаревают, а данные в базе продолжают храниться. Если удалить устаревший enum из кода, но оставить его в базе, Laravel может выдать ошибку, так как значение больше не соответствует ожидаемому набору.

📌 Основные сложности при использовании enum-кастинга в Laravel:

🔸Неочевидные ошибки — автоматический механизм приведения типов в Eloquent может привести к сбоям, не оставляя четкого следа в логах.
🔸Невозможность удаления устаревших значений — в продакшен-среде нельзя просто удалить данные, если их использует бизнес-логика.
🔸Проблемы при откате версий — если новая версия кода добавила enum, а затем произошел откат на более старую версию, система может перестать корректно работать.

Решение — отказ от жесткой привязки enum к модели через кастинг.

Вместо этого можно использовать кастомный обработчик, который позволит контролировать ошибки, не нарушая работу системы. Такой кастер позволяет безопасно обрабатывать неизвестные значения, предотвращая падение приложения.

Такой подход позволяет:

🔹Избежать неожиданных ошибок — кастер не выбрасывает исключения, а логирует проблему.
🔹Гибко управлять данными — можно настроить, как обрабатывать устаревшие значения (например, заменять их на дефолтные).
🔹Упрощает поддержку — код остается понятным и адаптируемым к изменениям

👉Читать подробнее
😁4🤔2🌚2
💡 Форматирование процентов

Знаете ли вы, что Laravel поставляется с помощником percentage, позволяющим получить процентное отношение к любому показателю? 🚀

#совет
👍6😁4🤔2
Как вы тестируете свой код?⬇️⬇️⬇️
😳 Если бы языки программирования были девушками

Выбрать язык — всё равно что найти идеального партнера. Кто-то западает на строгую типизацию, кто-то ищет простоту и гибкость, а некоторые готовы углубиться в самые сложные алгоритмы отношений.

Мы заглянули в Тиндер разработчика и нашли там PHP. Как вам? 😏

Еще больше прекрасных дам языков программирования в нашем канале Библиотека программиста.

Свайпайте и выбирайте свой мэтч ❤️
🥱10🔥7👍42
🔥История легенды Силиконовой долины: Энди Бехтольсхайм

Если вам интересна история Кремниевой долины из первых уст, прочитайте полное интервью.

➡️ Краткая выжимка

В этом интервью Энди Бехтольсхайм рассказывает о своем детстве в Германии, первых экспериментах с электроникой, учебе в Стэнфорде и работе в Xerox PARC. Он делится историей создания Sun Microsystems, перехода к сетевым технологиям и своими взглядами на будущее IT-индустрии. Также он объясняет, как сделал легендарную инвестицию в Google и почему стартапы должны правильно выбирать момент для выхода на рынок.

🔗 Ссылка на интервью в формате PDF
🥱7😢1
📊 Состояние PHP в 2024 году: результаты исследования состояния экосистемы разработчиков от JetBrains

PHP остается краеугольным камнем веб-разработки, на нем работают миллионы сайтов по всему миру. Его активное и заинтересованное сообщество ценит его гибкость и простоту использования.

В этом году в опросе приняли участие 2 660 PHP-разработчиков со всего мира. По уровню опыта преобладают мидлы. 86% уже используют PHP 8, но его распространение идёт медленнее, чем в своё время у PHP 7.

Среди фреймворков Laravel безоговорочно лидирует, а его популярность продолжает расти. В плане инструментов PhpStorm остаётся главным выбором разработчиков, однако VS Code набирает обороты, особенно среди начинающих.

Читайте в исследовании и узнайте, как PHP-разработчики ориентируются в постоянно меняющемся мире современной веб-разработки.
👍14🤩21
🔥 Как НЕ НАДО собеседовать middle разработчиков

Автор является действующим PHP middle разработчиком в одной средней компании. Занимается разработкой highload микросервисов в B2B сфере. Суммарно обрабатывается около 50к запросов в секунду, хранятся миллиарды записей и находится на поддержке около тысячи интернет‑магазинов.
Он имеет опыт в техническом собеседовании, в том числе и других middle php разработчиков. За свою карьеру провёл пару десятков таких собеседований, по результатам которых было нанято около 5 разработчиков и 2 аутсорс компании.

🔗Читай на Хабре, как автор делится опытом собеседования на позицию middle php разработчика во «ВКонтакте»
👍4😢3😁1🤔1
Самые полезные каналы для программистов в одной подборке!

Сохраняйте себе, чтобы не потерять 💾

🔥Для всех

Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
Proglib Academy — тут мы рассказываем про обучение и курсы
Азбука айтишника — здесь мы познаем азы из мира программирования

🤖Про нейросети
Библиотека робототехники и беспилотников | Роботы, ИИ, интернет вещей
Библиотека нейрозвука | Транскрибация, синтез речи, ИИ-музыка
Библиотека нейротекста | ChatGPT, Gemini, Bing
Библиотека нейровидео | Sora AI, Runway ML, дипфейки
Библиотека нейрокартинок | Midjourney, DALL-E, Stable Diffusion

#️⃣C#

Книги для шарпистов | C#, .NET, F#
Библиотека шарписта — полезные статьи, новости и обучающие материалы по C#
Библиотека задач по C# — код, квизы и тесты
Библиотека собеса по C# — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Вакансии по C#, .NET, Unity Вакансии по PHP, Symfony, Laravel

☁️DevOps

Библиотека devops’а — полезные статьи, новости и обучающие материалы по DevOps
Вакансии по DevOps & SRE
Библиотека задач по DevOps — код, квизы и тесты
Библиотека собеса по DevOps — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования

🐘PHP

Библиотека пхпшника — полезные статьи, новости и обучающие материалы по PHP
Вакансии по PHP, Symfony, Laravel
Библиотека PHP для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по PHP — код, квизы и тесты

🐍Python

Библиотека питониста — полезные статьи, новости и обучающие материалы по Python
Вакансии по питону, Django, Flask
Библиотека Python для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Python — код, квизы и тесты

Java

Книги для джавистов | Java
Библиотека джависта — полезные статьи по Java, новости и обучающие материалы
Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Java — код, квизы и тесты
Вакансии для java-разработчиков

👾Data Science

Книги для дата сайентистов | Data Science
Библиотека Data Science — полезные статьи, новости и обучающие материалы по Data Science
Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Data Science — код, квизы и тесты
Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту

🦫Go

Книги для Go разработчиков
Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go
Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Go — код, квизы и тесты
Вакансии по Go

🧠C++

Книги для C/C++ разработчиков
Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++
Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по C++ — код, квизы и тесты
Вакансии по C++

💻Другие каналы

Библиотека фронтендера
Библиотека мобильного разработчика
Библиотека хакера
Библиотека тестировщика
Библиотека разработчика игр | Gamedev, Unity, Unreal Engine
Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности

📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈

Также у нас есть боты:
Бот с IT-вакансиями
Бот с мероприятиями в сфере IT

Мы в других соцсетях:
🔸VK
🔸YouTube
🔸Дзен
🔸Facebook *
🔸Instagram *

* Организация Meta запрещена на территории РФ
🤔1
🎨 MetaStorm — плагин, расширяющий PHPStorm

Этот плагин позволяет расширить поведение PhpStorm и добавить поддержку ваших собственных фреймворков с помощью нескольких строк в файле конфигурации. Он разблокирует ссылки и автодополнение в обычных местах, таких как method($object,), render() и т. д.

👉Официальный сайт

#инструменты
🔥1
Какова цель использования функций array_count_values() и array_search() в PHP?

array_count_values(): Функция array_count_values() используется для подсчёта количества вхождений значений в массиве. Она возвращает ассоциативный массив, где ключи — это уникальные значения из входного массива, а значения — количество их появлений.

array_search(): Функция array_search() ищет определённое значение в массиве и возвращает первый ключ, соответствующий этому значению. Если значение не найдено, функция возвращает false.

#вопросы_с_собеседований
👍4🔥21
🔗 В PHP 8.4 улучшено именование замыканий для упрощения отладки

В PHP 8.4 улучшена читаемость стека вызовов при использовании замыканий. Ранее в трассировке ошибок замыкания обозначались просто как {closure}, без указания их расположения в коде. Это усложняло отладку, особенно если в одном пространстве имен использовалось несколько замыканий.

Теперь в стеке вызовов указывается место объявления замыкания. Например, вместо {closure} теперь отображается {closure:Shopware\Storefront\Controller\StorefrontController::renderStorefront():26}, что позволяет точно определить, где было создано и вызвано замыкание.

Кроме того, при использовании var_dump теперь можно увидеть файл и строку, где объявлено замыкание. Этот функционал ранее использовался в Tideways Profiler и Xdebug, а теперь стал частью PHP благодаря вкладу одного из разработчиков.

👉Читать подробнее
🔥30
2025/07/08 15:25:54
Back to Top
HTML Embed Code: