PHP-разработчики должны быть осторожны при использовании функции
unserialize(), поскольку она может стать уязвимостью, если применять её без соответствующих мер безопасности. Эта функция преобразует сериализованную строку обратно в переменную PHP, что удобно, но при работе с неподтверждёнными данными может привести к серьёзным последствиям.Опасности unserialize() при работе с ненадёжными данными
Одной из главных угроз является PHP Object Injection (POI). Злоумышленники могут передавать специально сформированные сериализованные объекты, что приведёт к выполнению нежелательных команд, утечке данных или даже удалению файлов. Например, если приложение десериализует пользовательские настройки без проверки входных данных, хакер может внедрить вредоносный объект и выполнить код на сервере.
Последствия атак через PHP Object Injection
Использование уязвимой десериализации может привести к:
🔸удалению файлов на сервере;
🔸выполнению произвольного кода;
🔸краже конфиденциальной информации.
Как защититься
Чтобы минимизировать риски, рекомендуется:
1. Избегать использования
unserialize() для данных от пользователя. Вместо этого применять безопасные форматы, такие как JSON2. Использовать параметр
allowed_classes (начиная с PHP 7.0) для ограничения десериализуемых классов3. Фильтровать классы при десериализации. Можно проверять, принадлежит ли объект разрешённому списку
4. Проверять и очищать входные данные. Например, использовать регулярные выражения для базовой фильтрации перед десериализацией.
👉Читать полностью
