Проверка кода php на ошибки онлайн: Проверка PHP-кода онлайн – Программирование и не только

Анализ кода на соответствие версии PHP

Задача

Определить совместимость кода с версией PHP

Примеры

  1. Старый сайт на php, надо понять, под какой версией PHP его можно запустить с минимальными правками.
  2. Вышла новая версия PHP. Получить список несоотвествий текущего кода с новой версией.

Решение

Так как эта задача — в области работы над кодом, не будет работать в продакшне, можно использовать доступный код.

  1. Composer, https://getcomposer.org/
    средство управления пакетами
  2. PHP_CodeSniffer, https://github.com/squizlabs/PHP_CodeSniffer
    конфигурируемый анализатор кода PHP / JS / CSS на предмет соответствия стандартам
  3. PHPCompatibility, https://github.com/PHPCompatibility/PHPCompatibility
    расширение для PHP_CodeSniffer для проверки совместимости

Установка

  1. установка composer глобально
    • папка под пакеты
      создание
      mkdir -p /home/user/docker-web-stack/. composer
      переменная окружения в ~/.bashrc
      export COMPOSER_HOME=/home/user/docker-web-stack/.composer
      перечитать файл
      source ~/.bashrc
    • скачать и установить по инструкции, чтоб composer был доступен в командной строке
      ссылка: https://getcomposer.org/doc/00-intro.md
    • проверка
      composer -V — выведет версию
      и
      composer about -vvv— выведет операции в г
  2. установка PHP_CodeSniffer глобально
    • установка
      composer global require "squizlabs/php_codesniffer=*"
    • проверка
      phpcs --version — выведет версию
  3. установка расширения
    • установка
      composer global require "phpcompatibility/php-compatibility=*"
    • указание пути к расширению
      phpcs --config-set installed_paths "$COMPOSER_HOME/vendor/phpcompatibility/php-compatibility
    • проверка, вывести все доступные стандарты
      phpcs -i
      должно вывести что-то вроде этого:
      The installed coding standards are MySource, PEAR, PSR1, PSR12, PSR2, Squiz, Zend and PHPCompatibility
      Т. е. PHPCompatibility должен присутствовать в списке

Примеры использования

На примере проекта ~/docker-web-stack/my-project/.

  1. Проверить текущую папку, только файлы .php на соответствие текущему php установленному в ОС. Результаты — на экран
    phpcs --standard=PHPCompatibility --extensions=php --no-colors ./
  2. Проверить текущую папку, только файлы .php на соответствие текущему php установленному в ОС. Результаты — на экран. Проверка — в три параллельных потока. Быстрее примерно на 20% в локальном тесте.
    phpcs --standard=PHPCompatibility --parallel=3 --extensions=php --no-colors ./
  3. Проверить папку my-awesome-project, только файлы .php на соответствие php 7.4. В два потока. Все ошибки, игнорировать часть предупреждений. Полные результаты — в отчёт, саммари — на экран.
    phpcs --standard=PHPCompatibility --extensions=php --no-colors --parallel=2 \
      --error-severity=1 \
      --warning-severity=7 \
      --runtime-set testVersion 7. 4 \
      --report-width=auto \
      --report-full=./phpc.74.txt \
      --report-summary \
      ~/projects/my-awesome-project/

PHP Проверка Кода на Безопасность, Анализ PHP Кода

Получить консультациюпо продукту Solar appScreener

Нажимая «Отправить», вы даете согласие на обработку своих данных согласно политике обработки персональных данных.


PHP – один из наиболее популярных языков для веб-разработки. В ежегодном отчете GitHub за 2021 г. он по уровню популярности находится на шестом месте, а в индексе TIOBE – на восьмом. Язык используется для создания сайтов и веб-приложений, в том числе и корпоративных. На нем написаны популярные CMS (Joomla, WordPress, Drupal), на которых работает огромное количество веб-ресурсов. К примеру, только на WordPress функционирует около 1/3 сайтов в интернете.


Учитывая распространенность этого языка и его применение для разработки важных для компаний информационных систем, можно говорить о заметном к нему интересе со стороны злоумышленников. Уязвимости в PHP эксплуатируются активно, поэтому их обнаружению стоит уделить особое внимание.


Безопасность PHP и анализ исходного кода SAST-инструментами


При разработке анализатора исходного кода Solar appScreener мы делали упор на SAST-анализ (метод белого ящика). Одна из его ключевых особенностей – возможность эксплуатации средств анализа не только разработчиками, но и конечными пользователями программных продуктов и информационных систем, написанных на языке PHP. SAST-анализ безопасности PHP-приложений позволяет организовать регулярное тестирование собственными силами. В нашем продукте результаты тестирования предоставляются в удобном для восприятия виде. Для работы с ними не нужен бэкграунд в разработке. С интерпретацией результатов без проблем справляются специалисты в области информационной безопасности или администраторы корпоративных информационных систем.


При использовании этого метода нет необходимости в развертывании отдельных сред для анализа ПО. Он покрывает практически 100% исходного кода. PHP-анализатор уязвимости, использующий технологию SAST, проверяет не только код самого приложения, но и связанных с ним внешних компонентов, библиотеки фреймворков (Laravel, Yii, Symphony, Zend Framework, FuelPHP и проч.) и так далее.


Типовые проблемы, которые обнаруживаются в PHP при проверке на уязвимости


SAST-анализ безопасности позволяет выявлять большинство типовых проблем, характерных для приложений, написанных на PHP. В программах, написанных на этом языке, встречаются как «универсальные» уязвимости, которые характерные для других языков программирования, так и специфичные, характерные именно для PHP.


Уязвимости, связанные с получением данных


Вероятность появления связанных с получением данных уязвимостей, которые могут эксплуатироваться злоумышленниками, заложена практически в любом современном языке программирования. PHP не исключение – тест исходного кода веб-приложений и сайтов довольно часто их выявляет.


Уязвимости могут быть связаны с:


  • вводимыми пользователями данными. Слабые места – контактные и другие типы форм, в которые пользователи вводят информацию. Уязвимости появляются из-за слабой валидации и фильтрации данных;


  • SQL-запросами на запись/ зменение. Довольно частое явление – внедрение SQL-запросов во входных данных таким образом, чтобы они исполнялись в теле основных SQL-запросов. Опять же, реализация связанных с этим обстоятельством угроз становится возможной из-за слабой фильтрации и валидации данных перед выполнением запросов;


  • POST/GET-запросами. Если приложение или сайт их принимает, то требуется надлежащая их обработка. Иначе через POST/GET-запросы могут реализовываться URL-атаки с целью получения доступа к файлам на сервере, внедрение вредоносного кода (например, через svg/onload), а также другие действия.


При наличии любых из этих проблем уязвимости можно обнаружить по характерным конструкциям кода. SAST-анализаторы неплохо справляются с этой задачей.


Прямой вызов файлов


При использовании подключения через require() или через автозагрузку классов есть возможность реализации угроз через вызов файлов напрямую из браузера. Если это удается злоумышленникам, им уже ничто не помешает передать в него исполняемый код (вредоносный).


Вероятные угрозы также можно обнаруживать при статическом анализе уязвимостей. Например, анализируя распределение файлов по каталогам или содержимое .htaccess.


Глобальные переменные


Возможность создавать глобальные переменные скрипта через строку запроса – на руку злоумышленникам. Благодаря этому они могут влиять на выполнение скриптов и реализовывать различные уязвимости. Наличие возможности задания глобальных переменных без проблем обнаруживается при статическом анализе кода.


Еще несколько характерных для PHP уязвимостей


При анализе PHP и проведении тестов безопасности следует уделять внимание следующим проблемам/уязвимостям, которые могут появляться в написанных на этом языке приложениях:


  • XSS или межсайтовый скриптинг. При реализации угрозы злоумышленники могут получать конфиденциальные данные, которые хранятся в браузере пользователя. Говорить о вероятном наличии угрозы можно при обнаружении проблем с фильтрацией данных и, в частности, HTML-тегов.


  • Различные виды инъекций: PHP, SQL, e-mail, через загрузку файлов.


  • Пароли доступа к административным страницам. Довольно часто уровню их сложности не уделяется должное внимание. Также пароли могут храниться в открытом доступе без какого-либо шифрования (например, md5). Получив доступ к файлам с этими данными, злоумышленники могут реализовывать угрозы.


Еще один момент, на который часто указывают специалисты по информационной безопасности, – разрешение пользователям вывода/демонстрации информации об ошибках. Но это момент спорный. С одной стороны, данная информация может быть использована злоумышленниками для поиска уязвимых мест, которые они потом эксплуатируют. С другой – отключение демонстрации ошибок создает трудности при обслуживании кода: разработчики и команды поддержки могут пропустить важные ошибки.


Видно, что PHP не лишен недостатков. При его использовании, как и в случае с любым другим языком программирования, могут возникать (и возникают) различные уязвимости. Чтобы держать все под контролем, целесообразно проводить регулярные проверки приложений и сайтов на PHP. Сделать это поможет SAST-анализ программного кода. 

Примечания к выпуску | Средство проверки кода PHP

Вернуться к средству проверки кода и синтаксиса PHP

  • Версия 2.96 — 31 января 2022 г.
    • Проверка PHP 8.x LINT обновлена ​​до версии 8.1.
    • ИСПРАВЛЕНИЕ ОШИБКИ: Раньше, даже при выборе 8.x, все равно использовался только PHP 7.x. Эта старая ошибка была исправлена, и оба варианта работают, как и ожидалось.
  • Версия 2.95 — 19 декабря 2021 г.
    • API теперь поддерживает передачу переменной ?base64. POST должен быть base64_encode() и urlencode() после для правильной передачи и декодирования перед обработкой.
  • Версия 2.94 — 29 мая 2021 г.
    • Удалена проверка lint для PHP 5.6.
  • Версия 2.93 — 30 апреля 2021 г.
    • Обновлены параметры для проверки с использованием PHP 8.0, PHP 7.4 (по умолчанию) или PHP 5.6.
    • API

    • обновлен до версии PHP 7.4.
  • Версия 2.92 — 11 января 2020 г.
    • Обновлен параметр для проверки с использованием PHP 7.3 (по умолчанию) или PHP 5.6.
    • API

    • обновлен до версии PHP 7.3. Нет возможности использовать 5.6 для запросов API.
  • Версия 2.91 — 3 марта 2019 г.
    • Обновлен параметр для проверки с использованием PHP 7.2 (по умолчанию) или PHP 5.6.
    • API

    • обновлен до версии PHP 7.2. Нет возможности использовать 5.6 для запросов API.
  • Версия 2. 9 — 5 июля 2018 г.
    • Добавлена ​​возможность проверки с помощью PHP 7.1 (по умолчанию) или PHP 5.6. (Попробуйте этот код для сравнения: 1; ?> )
    • Весь сайт обновлен до PHP 7.x (по какой-то причине я все еще запускал его на 5.6.x)
    • API

    • обновлен до версии PHP 7.1. Нет возможности использовать 5.6 для запросов API.
  • Версия 2.83 — 2 января 2018 г.
    • Усовершенствованный интерфейсный код для более быстрого рендеринга начальной страницы.
  • Версия 2.82 — 13 июля 2016 г.
    • Внесены некоторые незначительные изменения стиля, в том числе затемнение фона для лучшей читаемости результатов.
  • Версия 2.81 — 25 января 2016 г.
    • Выпущен подписанный SSL-сертификат для тех, кто предпочитает безопасный PHPCodeChecker.
  • Версия 2.8 — 2 сентября 2015 г.
    • Проверка синтаксиса PHP (php -l) теперь обновлена ​​до 5. 6.10 (ранее 5.4.11).
  • Версия 2.7 — 10 июля 2015 г.
    • Исправлено ложное срабатывание предупреждения об отсутствии ‘>’ в объявлении массива пары ключ/значение при использовании одинарных кавычек (спасибо Tronds).
  • Версия 2.62 — 2 июля 2015 г.
    • Добавлено уточнение для несовпадающего количества () {} или [] незнания того, что символ находится внутри строки (и не должен учитываться, но есть).
  • Версия 2.61 — 12 июня 2015 г.
    • Из-за недавних злоупотреблений блокировка злоумышленников API была автоматизирована для частых избыточных вызовов.
  • Версия 2.6 — 31 мая 2015 г.
    • Удалено ложное срабатывание объявления переменной с сообщением об ошибке ==. (Спасибо, Кен Г.)
    • Редизайн веб-сайта на Bootstrap, что сделало его полностью адаптивным и удобным для мобильных устройств.
    • Добавлена ​​реклама Carbon Ads (рекламная сеть, связанная с разработчиками), которая загружается вместе со страницей и не обновляется во время проверок (потому что это будет раздражать).
  • Версия 2.51 — 25 января 2015 г.
    • Добавлена ​​кнопка «Очистить» для ящика. (Спасибо, Мартин Х.)
  • Версия 2.5 — 21 января 2015 г.
    • НОВАЯ ПРОВЕРКА: двойные точки с запятой (;;), даже если они находятся на разных строках. (Спасибо, Майкл Х.)
  • Версия 2.4 — 17 декабря 2014 г.
    • API теперь имеет встроенную задержку не более 1 запроса в секунду.
  • Версия 2.33 — 12 декабря 2014 г.
    • Больше не идентифицирует // как начало комментария, если первая косая черта экранирована (например, \//), что можно найти в выражении preg_match().
    • Проверка синтаксиса API также включает это изменение (поскольку оно будет мешать0074 исходный код ).
  • Версия 2.32 — 4 ноября 2014 г.
    • Больше не удаляет комментарии в стиле Perl (# комментарий) — больше проблем, чем решений.
  • Версия 2.31 — 11 октября 2014 г.
    • Теперь перед синтаксическим анализом удаляются строки комментариев в стиле Perl (# comment). (Спасибо Кейли С.)
  • Версия 2.3 — 3 октября 2014 г.
    • Незначительное исправление (ложное срабатывание) для объявлений массивов, определяющих array() в качестве значения. (Спасибо Рене-Пьер Г.)
    • Незначительное исправление для объявлений массивов, которые содержат знак равенства (=) как часть строки HTML в значении. (Спасибо Рене-Пьер Г.)
  • Версия 2.21 — 2 августа 2014 г.
    • Удалено ложное срабатывание устаревшего метода split() при использовании mb_split, str_split, preg_split, chunk_split и dba_key_split. (Спасибо Брент Э.)
  • Версия 2.2 — 9 июля 2014 г.
    • Добавлено предупреждение для любых функций, которые устарели в PHP 5.x (спасибо, Фитра Ф.)
  • Версия 2.11 — 20 июня 2014 г.
    • Исправлена ​​XSS-уязвимость в ошибках проверки синтаксиса (спасибо, Кевин З. )
  • Версия 2.1 — 4 мая 2014 г.
    • Добавлен новый тест на использование чего-либо, кроме квадратных скобок [] после предопределенной переменной ( напр. $_GET, $_POST, $_SERVER и т. д.) (Спасибо, Дэниел А.)
  • Версия 2.02 — 30 января 2014 г.
    • Улучшено обнаружение RegEx массивов, используемых в ошибке объявления массива , для уменьшения ложных срабатываний (спасибо CoR)
  • Версия 2.01 — 2 января 2014 г.
    • Исправлена ​​ошибка безопасности с отображением вывода при поиске несовпадающих пар символов (Спасибо, Дэн Т.)
  • Версия 2.0 — 2 декабря 2013 г.
    • Проверка синтаксиса PHP (php -l) теперь обновлена ​​до 5.4.11 (ранее 5.2.17)
  • Версия 1.81 — 9 ноября 2013 г.
    • Установка значения null в массивах больше не вызывает ошибку «без кавычек» (Спасибо, Александр).
  • Версия н/д — 30 октября 2013 г.
    • Выпущена проверка синтаксиса PHP (только) через API: http://phpcodechecker.com/api/
      Уникальные проверки PHPCodeChecker будут добавлены в API в будущем.
  • Версия 1.8 — 23 октября 2013 г.
    • Исправлена ​​ложноположительная ошибка объявления массива из-за отсутствия пробела между = и array() (спасибо Scott D и Ethan M).
    • Уменьшено количество ложных срабатываний для , отсутствующей точки с запятой из-за конкатенации (спасибо Raymond M).
      Он не сработает, если точка находится в конце строки, но все равно будет ложноположительным, если точка находится в начале новой строки.
    • Код, отличный от PHP, удаляется, как и комментарии, перед проверкой, что снижает количество ложных срабатываний.
    • Сбросить общедоступный журнал ошибок.
  • Версия 1.72 — 28 мая 2013 г.
    • Исправлена ​​ошибка, из-за которой конец PHP ?> не учитывался при удалении комментариев (спасибо, Йоханнес).
  • Версия 1.71 — 22 апреля 2013 г.
    • Исправлена ​​ошибка, из-за которой http:// вызывал проблемы: ошибочно определялся как комментарий (спасибо, Икрам Х).
  • Версия 1.7 — 12 апреля 2013 г.
    • Проверка синтаксиса PHP указывает на конкретный номер строки… эта строка теперь отображается для вас (спасибо, Джон Б.).
  • Версия 1.6 — 24 января 2013 г.
    • Значительно уменьшено количество ложных срабатываний для массивов с отсутствующими > и неправильно сформированными ключами или значениями (спасибо, Майкл С).
  • Версия 1.5 — 2 января 2013 г.
    • Автоматически удаляет комментарии перед обработкой, уменьшая количество ложных срабатываний (Спасибо, Карло).
  • Версия 1.4 — 21 мая 2012 г.
    • Улучшено RegEx для всех обнаружений массива, чтобы игнорировать функция in_array() (спасибо, Эндрю Х).
  • Версия 1. 3 — 20 февраля 2012 г.
    • Улучшено регулярное выражение для ошибки объявления переменной (спасибо, Дэвид Р).
  • Версия 1.2 — 1 ноября 2011 г.
    • Улучшено RegEx, чтобы не генерировать ложные срабатывания, когда терниарный оператор присутствует в объявлении переменной.
    • Улучшено регулярное выражение для обнаружения одного знака равенства в управляющей структуре ( напр. если выписка)
  • Версия 1.11 — 15 июля 2011 г.
    • Социальные кнопки перемещены для отображения только после анализа кода. Добавлен Google +1 для обмена в социальных сетях.
  • Версия 1.1 — 9 июля 2011 г.
    • Предоставлен общедоступный журнал распространенных ошибок PHP.
  • Версия 1.0 — 6 июля 2011 г.
    • Выход из периода бета-тестирования. Дальнейшие улучшения будут вдохновлены отзывами пользователей.
  • Версия 0.6 — 24 июня 2011 г.
    • Добавлена ​​проверка отсутствия > в объявлениях массива ( например, array(‘name’=’value’))
    • Также проверяет объявления массива на наличие текстовых переменных или значений, не заключенных в кавычки ( например, array(‘name’=>value))
  • Версия 0.5.2 — 3 июня 2011 г.
    • Обновлена ​​проверка If/Elseif/Else с улучшенным шаблоном RegEx (уменьшено число ложных срабатываний)
    • Обновлен шаблон RegEx объявления переменной для поддержки логического значения
  • Версия 0.5 — 31 мая 2011 г.
    • Проверить структуры управления If/Elseif/Else на использование одиночного равенства (установить значение, а не оператор сравнения)
  • Версия 0.4 — 16 мая 2011 г.
    • Проверить наличие несоответствующих пар комментариев /* */, которые могут нанести ущерб вашему здравомыслию
    • Проверка неправильного синтаксиса в foreach при определении переменных $key=>$value
    • Проверка на наличие неправильно отформатированных объявлений PHP () — Спасибо Б. М.
  • Версия 0.3 — 22 апреля 2011 г.
    • Добавлена ​​проверка синтаксиса командной строки PHP (php -l) для предоставления дополнительного контекста
  • Версия 0.2 — 10 апреля 2011 г.
    • Создано сложное регулярное выражение для проверки строк, определяющих переменную, но в которых отсутствует точка с запятой (, например, $variable = «bob»)
    • Регулярные выражения адаптированы для поиска переменных, определенных со слишком большим количеством знаков равенства (, например, $variable == «bob»;)
  • Версия 0.1.2 — 7 апреля 2011 г.
    • Отображает код проблемы при несовпадающем открытии (, { или [
  • Версия 0.1.1 — 30 марта 2011 г.
    • Переписан, чтобы быть более модульным в коде
    • Проверка на несоответствие (), {} и []
  • Версия 0.1 — 20 марта 2011 г.
    • Проверка на несовпадение количества скобок (открытых/закрытых)

5 бесплатных веб-сайтов для проверки кода PHP

Рейтинги редактора:

Рейтинги пользователей:

[Всего: 0 Среднее: 0]

Вот список из 5 бесплатных сайтов для проверки кода PHP . Как следует из названия поста, эти веб-сайты позволяют протестировать ваш PHP-код, чтобы убедиться в его правильности. Эти веб-сайты проверят ваш PHP-код, а затем сообщат вам об ошибках и предупреждениях, если таковые имеются. Самое главное преимущество использования этих веб-сайтов заключается в том, что вам не нужно ничего загружать и устанавливать в своей системе.

Что касается ввода кода PHP, вы можете сделать это либо путем копирования, либо путем загрузки файла PHP. Итак, приступим.

PHPCodeChecker.com — первый веб-сайт в этом списке, который проверяет ваши PHP-коды. Веб-сайт выполняет проверку синтаксиса (lint) и пользовательскую проверку на распространенные ошибки. Чтобы протестировать свой PHP-код, вам просто нужно вставить его в данное текстовое поле и нажать кнопку Analyze . Если введенный вами код не содержит ошибок, то на веб-сайте появится сообщение «Проблемы не найдены», а в случае ошибок вы увидите тип ошибки по номеру строки, в которой существует ошибка.

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

Pilliapp Средство проверки кода PHP предоставляет вам возможность выбора версии PHP перед началом процесса проверки. Вы можете выбрать из php-4.4.9, php-5.2.17, php-5.3.21, php-5.4.28, php-5.5.12 и php-5.6.6. Если вы не знаете, какую версию выбрать, просто вставьте код PHP в текстовое поле и нажмите кнопку «Проверить». Веб-сайт автоматически выберет для вас подходящую версию.

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

Следующий сайт PHPTester.net имеет очень минималистичный дизайн. Существует текстовое поле для ввода кода PHP и возможность выбора версии PHP: 5. 2, 5.3 или 5.4. После ввода кода PHP нужно нажать на кнопку Нажмите, чтобы проверить код PHP . Если код правильный, веб-сайт покажет вам вывод, в противном случае он отобразит сообщение об ошибке. Сообщение об ошибке показывает тип ошибки вместе с ожидаемым решением для ее исправления.

Среднее отклонение — это веб-сайт, на котором нет возможности вставить или ввести код PHP. Вы должны загрузить файл PHP на веб-сайт, а затем нажать кнопку «Проверить». Веб-сайт начнет процесс проверки и покажет вам результаты.

Если файл не содержит ошибок, вы получите сообщение, подтверждающее это, в противном случае вы увидите сообщение с указанием точной ошибки. Кроме того, сайт также показывает код и отмечает строку с ошибкой. Веб-сайт проверяет ваш файл PHP в соответствии с PHP 5.3, но вы также можете переключиться на PHP 4, PHP 5.2, PHP 5.4 и PHP 5.5.

PhpFiddle — последняя онлайн-программа проверки кода PHP в этом списке.

This entry was posted in Популярное