Сравнения языков программирования с позиции безопасности написанного на них кода
Компания Veracode опубликовала результаты исследования зависимости числа уязвимостей в коде от используемого языка программирования. В рамках исследования был выполнен статический анализ более 200 тысяч приложений, который показал, что наибольшее число связанных с безопасностью ошибок присутствует в коде проектов на ASP, ColdFusion и PHP. Учитывая то, что на PHP написаны платформы Drupal, Joomla и WordPress, доля которых среди систем управления контентом составляет около 70% и на которых работает четверть крупнейших сайтов в Сети, язык PHP указан как приносящий наибольшие проблемы с безопасностью.
В соответствии с опубликованным отчётом, каждые четыре из пяти приложений на PHP, ASP и ColdFusion не проходят как минимум один из десяти тестов OWASP на безопасность. В частности, при тестировании Veracode в 86% всех приложений на PHP выявлена как минимум одна XSS-уязвимость (Cross-Site Scripting), в 56% - проблемы подстановки SQL-запросов, 61% - возможность подстановки кода, 50% - утечки информации, 73% - проблемы с шифрованием, 58% - проблемы с аутентификацией, 67% - выход за пределы дозволенных директорий. В более современных языках, таких как .NET и Java, данные показатели почти в два раза ниже. Что касается тестов OWASP, то все десять тестов прошли только 19% приложений на PHP (для сравнения все тесты OWASP прошли 60% программ на C/C++).
Рейтинг платформ по числу критических уязвимостей в коде выглядит следующим образом:
- Classic ASP - 1686 проблем на мегабайт кода (из них критических 1112)
- ColdFusion - 262 проблем на мегабайт кода (из них критических 227)
- PHP - 184 проблем на мегабайт кода (из них критических 47)
- Java - 51 проблем на мегабайт кода(из них критических 5.2)
- .NET - 32 проблем на мегабайт кода (из них критических 9.7)
- C++ - 26 проблем на мегабайт кода (из них критических 8.8)
- iOS - 23 проблем на мегабайт кода (из них критических 0.9)
- Android - 11 проблем на мегабайт кода (из них критических 0.4)
- JavaScript - 8 проблем на мегабайт кода (из них критических 0.09)