Анализ проблем языка программирования PHP

В статье "PHP: a fractal of bad design" представлен подробный и обстоятельный обзор проблем в дизайне языка программирования PHP. Автор показывает исключительность PHP как одного из наиболее непроработанных языков, проблемы в котором носят систематический характер. В частности в статье продемонстрированы проблемы в самом языке, библиотеке функций, структурах, механизмах работы с данными, экосистеме, средствах отладки. Указаны на недоработки в безопасности, надёжности, целостности и предсказуемости.
Если рассматривать безопасность, то в качестве примера изначально порочной практики приводится разрозненность средств для чистки и нормализации данных перед их использованием в различных операциях, что является прекрасным подспорьем для возникновения в приложениях уязвимостей, позволяющих осуществить подстановку SQL-кода или встраивания JavaScript на страницу. Упоминания также заслуживает подход "небезопасен по умолчанию", который только последнее время стал пересматриваться разработчиками PHP, например, причиной моря уязвимостей является использование register_globals и поддержка выполнения внешнего кода по URL в директиве include. Из проблем в самом интерпретаторе отмечается попытка исправить в 2007 году целочисленную уязвимость через проверку "if (size > INT_MAX) return NULL;"; ошибка в реализации функции crypt() в PHP 5.3.7 из-за которой можно было зайти с любым паролем; DoS-уязвимость в PHP 5.4, связанная с выделением памяти на основании переданного пользователем значения в HTTP-заголовке Content-Length.
Дополнение: доступен перевод статьи на русский язык.



Яндекс.Метрика
Счётчик ТЦ#65533;Ц LiveRSS: Каталог русскоязычных RSS-каналов