TG Telegram Group Link
Channel: Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter
Back to Bottom
Объясните Path Traversal в PHP

Path traversal (траверсирование путей) — это уязвимость безопасности, которая возникает, когда приложение позволяет пользователям указывать пути к файлам и не выполняет должную очистку пользовательского ввода. Это может позволить злоумышленникам получить доступ к файлам и директориям, находящимся вне предусмотренной директории. В PHP эта уязвимость может возникнуть, когда пути к файлам конструируются с использованием пользовательского ввода без надлежащей валидации или очистки.

Как работает Path Traversal

Пользовательский ввод: Приложение принимает пользовательский ввод для путей к файлам, например, через параметр GET или POST.
Неправильная очистка: Приложение неправильно очищает или валидирует ввод.
Траверсирование директорий: Злоумышленник может манипулировать вводом для навигации по файловой системе с помощью последовательностей вроде ../ (точка-точка-слэш) для перемещения вверх по структуре директорий.
Несанкционированный доступ к файлам: Злоумышленник получает доступ к файлам и директориям за пределами предусмотренного диапазона, который может включать конфиденциальную информацию, например, конфигурационные файлы, файлы с паролями или другие конфиденциальные данные.

Меры по предотвращению уязвимостей Path Traversal

Чтобы предотвратить уязвимости path traversal в PHP, следует:

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

#вопросы_с_собеседований
Как проверить размер базы данных и таблиц MySQL

Здесь рассматривается, как проверить размер баз данных, таблиц и индексов в MySQL с помощью SQL-команд, что полезно для эффективного управления ресурсами сервера и планирования расширений или оптимизаций.

Проверка использования дискового пространства MySQL
Для общего понимания, сколько места занимает директория MySQL, используйте команду Linux:

du -sh /var/lib/mysql

Эта команда показывает, сколько дискового пространства занимает директория данных MySQL, обычно расположенная в '/var/lib/mysql'.

Также, уже с помощью SQL-запросов, можно проверить следующие данные:

✔️Размер конкретной базы данных
✔️Размер всех баз данных
✔️Размер конкретной таблицы
✔️Размеры всех таблиц из всех баз данных
✔️Размер индексов

Эти команды полезны для мониторинга роста базы данных, планирования резервного копирования и оптимизации производительности.
👀Что из этого сгенерировала нейросеть?

Подписывайтесь на наш новый канал про нейросети для создания изображений, там есть:

🌸Новые нейросети и инструменты, например, вот модель генерирует картинки по наброску
🌸Промты для разных задач
🌸Лайфхаки по использованию нейросетей

👉Подписывайтесь!
Please open Telegram to view this post
VIEW IN TELEGRAM
Интересная функция, появившаяся в Laravel 10, «--profile», которая облегчит вам поиск медленных тестов в вашем приложении.

Этот параметр «--profile» поможет сохранить скорость ваших тестов и поможет вам либо исправить медленные тесты, либо лучше сгруппировать их, чтобы не запускать их все время.
🐳 Что ж, давайте об актуальном: а вы используете Docker в рабочих проектах?

👍 — использую
👾 — нет

#интерактив
Новое в Symfony 7.1

В Symfony 7.1 представлено два интересных нововведения: компонент TypeInfo и атрибут MapUploadedFile. Давайте рассмотрим их подробнее.

TypeInfo Component

TypeInfo — это новый компонент, который предоставляет расширенные возможности для работы с типами данных в PHP. Основные возможности компонента включают:

🟢Более точная информация о типах данных: TypeInfo предоставляет методы для получения детальной информации о типах данных, включая их подтипы, nullable и union типы.

🟢Улучшенное сравнение типов: Компонент позволяет сравнивать типы данных с учетом всех возможных вариантов, что упрощает написание более точных и надежных проверок типов.

🟢Поддержка параметров и возвратов типов функций: TypeInfo позволяет легко получить информацию о типах параметров и возвратных типов функций и методов, что особенно полезно при работе с рефлексией и генерацией кода.

MapUploadedFile Attribute

MapUploadedFile — это новый атрибут, который упрощает работу с загруженными файлами в Symfony. Этот атрибут автоматически преобразует объекты UploadedFile в нужный вам формат.

Основные возможности включают:

🔸Автоматическое маппирование: Атрибут автоматически маппирует загруженные файлы в параметры вашего контроллера, что упрощает работу с файлами.

🔸Поддержка валидации: MapUploadedFile поддерживает встроенную валидацию загруженных файлов, что обеспечивает дополнительную безопасность и надежность.

🔸Интеграция с другими компонентами Symfony: Атрибут легко интегрируется с другими компонентами и сервисами Symfony, что упрощает его использование в рамках всего приложения.
🍓 Подборка лучших статей «Библиотеки программиста» за май: сохраняй в заметки, чтобы не пропустить #самыйсок

🐍🆕 Змея сбросила старую кожу: что нового в Python 3.13
🐍🔀 Под капотом asyncio: принципы работы и ключевые концепции
🗝️ 40 незаменимых API для разработчиков
🖥️🔤 Транскрибация видео и создание субтитров с помощью Whisper, FFmpeg и Python
📊 Где изучать Data Science в 2024 году?
🌐 Scrapy VS Crawlee: сравнение фреймворков для веб-скрапинга
❤️ Активация с первого взгляда: как влюбить пользователя в продукт
💻🚀🏰 Как мы создали ИИ-стартап на хакатоне выходного дня в Германии
🐍🌳 Реализация алгоритма Укконена на Python
📈 Стать аналитиком Big Data: пошаговое руководство 2024
💻🚀💊 «Доктор Хаус»: ИИ-диагност в вашем телефоне. Передаём стартап в хорошие руки
📖 ТОП-10 книг о том, как правильно построить карьеру в IT
🤯 Как простая задачка поставила в тупик программистов (и как они из него выбрались)
🐳✈️ Docker ушёл из РФ! Инструкция по восстановлению доступа
💸📊 На сколько просели зарплаты в ИТ в 2024 году?
🎤 Как не облажаться с докладом на IT-конференции
🏃 Самоучитель по Go для начинающих. Часть 12. Обобщенное программирование. Дженерики
🎭 7 типов программистов, которых вы встретите на собеседовании
🔍 Тестирование в Java: лучшие практики, инструменты и рекомендации для разработчиков
👁️💼 Открытые и скрытые вакансии в IT: как найти работу мечты
🅾️ Что такое «О» большое: объясняем на простых примерах
🤖💼 55 промтов для ChatGPT, которые помогут подготовиться к собеседованию
🐍💪 ТОП-5 вопросов повышенной сложности на собеседовании по Python
Please open Telegram to view this post
VIEW IN TELEGRAM
Оптимизация PHP-приложений для повышения производительности

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

Подписывайтесь на наш новый канал про айти для неайтишников — для совсем новичков и тех, кто постоянно взаимодействует с айтишниками.

У нас есть рубрики:
База — в ней рассказываем про термины из IT простым языком
Проект — объясняем, из чего состоят айтишные проекты и сколько они могут стоить
Психология айтишника — тут говорим про софт-скиллы, особенности работы и взаимодействия

👉Подписывайтесь!
Please open Telegram to view this post
VIEW IN TELEGRAM
Пакет для инвалидации КЭШа на PHP

Здесь описывается система кеширования данных в PHP с использованием классов и алгоритмов для эффективного управления и обновления кеша. Рассматриваются два основных сценария: кеширование до события изменения (event-based caching) и кеширование на время (lifetime-based caching). Приводится подробный алгоритм и блок-схема для реализации кеширования до события изменения, а также рассматривается проблема дочерних вызовов, когда изменение одного элемента кеша должно обновлять все зависимые от него элементы.
Самые полезные каналы для программистов в одной подборке!

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

🔥Для всех

Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
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++

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

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

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

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

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

* Организация Meta запрещена на территории РФ
Как использовать Eager loading в Laravel?

Eager loading в Laravel — это способ предварительной загрузки связанных моделей, чтобы уменьшить количество запросов к базе данных и повысить производительность приложения. При использовании ленивой загрузки (lazy loading) связанные данные загружаются только тогда, когда к ним обращаются, что может привести к множественным запросам к базе данных (проблема N+1 запросов). В то время как eager loading загружает все необходимые данные заранее, используя объединение (join) или отдельные запросы с использованием ключевого слова with.

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

#вопросы_с_собеседований
Новое в Symfony 7.1

Улучшения в WebProfiler

WebProfiler — это инструмент, который помогает разработчикам анализировать и отлаживать свои приложения. В Symfony 7.1 WebProfiler получил несколько значительных улучшений:

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

Новые панели и метрики:
🔸Добавлены новые панели, которые показывают более детальную информацию о запросах, ответах, маршрутизации и прочих аспектах работы приложения.
🔸Метрики и графики теперь отображаются более наглядно, что помогает быстро находить и исправлять проблемы производительности.

Гибкая настройка:
🔸Возможность настройки панелей и отображаемых данных под конкретные нужды проекта.

Улучшенный аутентификатор с токенами доступа

В Symfony 7.1 представлено улучшение в системе аутентификации с использованием токенов доступа. Основные изменения:

Поддержка различных стратегий аутентификации: Новый аутентификатор позволяет легко интегрировать и комбинировать различные методы проверки подлинности (например, OAuth, JWT и другие).

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

Удобство использования: Улучшена документация и примеры использования, что позволяет быстрее и проще внедрять аутентификацию на основе токенов в проекты.

Маршрутизация с параметрами

Одной из интересных новинок в Symfony 7.1 является улучшенная работа с параметрами маршрутов. Теперь параметры маршрутов могут быть более гибко управляемыми и настроенными:

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

Улучшенная валидация:
Добавлена возможность более гибкой валидации параметров маршрутов прямо в конфигурации маршрутов.

Оптимизация производительности:
Улучшены внутренние механизмы маршрутизации для повышения производительности обработки запросов.
«Как мы повысили продуктивность написания админ-панелей, используя Filament»

Здесь показан реальный опыт разработки админ-панелей (CMS) с использованием Filament — чрезвычайно мощной библиотеки Fullstack-компонентов, основанной на фреймворке Laravel и технологии Livewire.

Laravel используется в качестве основного фреймворка для разработки бэкенда всех проектов, и однажды возник вопрос: какое решение для админ-панелей выбрать? Выбор пал на Filament — тогда еще сырой, маленькой, почти незадокументированной open-source админке.

Как показало время, выбор оказался правильным.

Важно подметить, что выбор делался достаточно долго, особенно между Filament и другой, на первый взгляд, более популярной среди русскоязычного сообщества Laravel, библиотекой — Orchid (отечественная админ-панель с философией DIY).

Работа над несколькими проектами на Orchid велась параллельно с проектами на Filament, и в итоге выбор был сделан в пользу последнего. В этой статье будут изложены причины, по которым Filament считается лучшим выбором для разработки CMS.
🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи

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

Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.

Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.

👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
«Primitive Obsession» (Примитивная Одержимость)

Автор делится мнением, почему лучше использовать объекты ValueObject вместо bool, int, string, float, array.
HTML Embed Code:
2024/06/18 12:47:31
Back to Top