В статье "PHP: a fractal of bad design [2]" представлен подробный и обстоятельный обзор проблем в дизайне языка программирования PHP. Автор показывает исключительность PHP как одного из наиболее непроработанных языков, проблемы в котором носят систематический характер. В частности в статье продемонстрированы проблемы в самом языке, библиотеке функций, структурах, механизмах работы с данными, экосистеме, средствах отладки. Указаны на недоработки в безопасности, надёжности, целостности и предсказуемости.
Если рассматривать безопасность, то в качестве примера изначально порочной практики приводится разрозненность средств для чистки и нормализации данных перед их использованием в различных операциях, что является прекрасным подспорьем для возникновения в приложениях уязвимостей, позволяющих осуществить подстановку SQL-кода или встраивания JavaScript на страницу. Упоминания также заслуживает подход "небезопасен по умолчанию", который только последнее время стал пересматриваться разработчиками PHP, например, причиной моря уязвимостей является использование register_globals и поддержка выполнения внешнего кода по URL в директиве include. Из проблем в самом интерпретаторе отмечается попытка исправить в 2007 году целочисленную уязвимость через проверку "if (size > INT_MAX) return NULL;"; ошибка [3] в реализации функции crypt() в PHP 5.3.7 из-за которой можно было зайти с любым паролем; DoS-уязвимость в PHP 5.4, связанная с выделением памяти на основании переданного пользователем значения в HTTP-заголовке Content-Length.
Дополнение: доступен [4] перевод статьи на русский язык.
Ссылки:
[1] http://htfl.ru/cat-news-php
[2] /out.php?link=http://me.veekun.com/blog/2012/04/09/php-a-fractal-of-bad-design/
[3] http://htfl.ru/news/reliz-php-538-s-ustraneniem-sereznoi-problemy-bezopasnosti
[4] /out.php?link=http://habrahabr.ru/post/142140/