Выполните все эти проверки самостоятельно, чтобы пройти модерацию с первой попытки.
Настройка тестового стенда
- Установлен PHP минимальной версии для установки фреймворка Webasyst (или в IDE настроена проверка соответствия программного кода этой версии PHP). Если в системных требованиях продукта указана более высокая версия PHP, то следует использовать для тестирования именно эту версию вместо минимальной версии для установки фреймворка.
- Скачайте и установите последнюю версию фреймворка Webasyst.
- Фреймворк должен быть установлен в поддиректорию домена, например,
http://localhost/check/
. - URL входа в бекенд изменен на нестандартный, например,
/admin/
. - В файл
wa-config/db.php
добавлен параметр'sql_mode' => 'TRADITIONAL'
. - Включено логирование всех ошибок PHP:
error_reporting = 2147483647
. - В приложении «Сайт» настроено минимум 2 сайта — с разными доменами. Для тестируемого приложения должны быть настроены минимум 2 поселения: в корне сайта (
*
) и в «подпапке» (shop/*
). Тестировать на всех поселениях всех доменов.
Чего не должно быть в программном продукте
- Возможность конфликтов с другими установленными продуктами.
- Более одной директории в корне архива с файлами продукта: архив должен содержать единственную директорию, имя которой совпадает с идентификатором продукта.
- Посторонний код в конфигурационных файлах
db.php
,app.php
,plugin.php
,settings.php
, кроме описанного в документации. Вrouting.php
в отдельных случаях допустим простой код, если без него нельзя обойтись. - Файлы PHP-классов и HTML-шаблонов с нарушением правил именования файлов и PHP-классов, описанных в документации.
- Лишние файлы, не используемые в работе продукта.
- Директории с PHP-файлами, HTML-шаблонами и файлами локализации, не содержащие файлы
.htaccess
с директивойDeny from all
. - Лишние директивы в файлах
.htaccess
. - Пустые директории.
- Вставка значений в SQL-запросы без использования плейсхолдеров (рекомендуется) или явного приведения значений к безопасному типу.
- В PHP-коде используются средства, недоступные в некоторых из версий начиная с минимальной версии для работы программного продукта, и описание этого ограничения отсутствует в системных требованиях.
- При использовании PHP-расширений не проверяется их наличие и в конфигурационном файле отсутствует описание соответствующего системного требования.
- При использовании функций
file_get_contents
,copy
,get_headers
, классаXMLReader
и аналогичных инструментов применительно к удаленному ресурсу в коде продукта не проверяется значение параметраallow_url_fopen
, которое должно быть также описано в системных требованиях. - Сохранение, модификация или удаление файлов вне предназначенных для этого директорий
wa-cache/
,wa-config/
иwa-data/
— например, вwa-apps/
,wa-content/
,wa-installer/
,wa-plugins/
иwa-system/
. - В именах файлов или директорий используются символы, не поддерживаемые разными операционными системами.
- Создание таблиц базы данных другими способами, кроме использования файлов
db.php
(кроме метаобновлений, см. ниже). - Создание полей таблиц другими способами, кроме использования файлов
install.php
. - Повторное выполнение кода в файле
install.php
вызывает возникновение ошибок. - Сообщения об ошибках JavaScript в консоли браузера.
- Сообщения об ошибках в PHP-логах.
- Сообщения об ошибках в ответах сервера.
- Не выполняется экранирование символов при отображении данных, или выполняется излишнее экранирование.
- В интерфейсе пользователя неправильно обрабатывается ввод текста вида
'"></textarea><script>alert(1)</script>
Т. е. выполняется JavaScript-код вместо отображения текста. - В качестве пути к бекенду используется жестко прописанный в коде фрагмент
webasyst/
. - В URL для подключения к веб-странице файлов со сторонних ресурсов жестко задан протокол
http://
— это может сделать нерабочим интерфейс, открытый черезhttps://
. Следует использовать универсальный способ указания URL для таких файлов с использованием фрагмента//
. - Во фронтенде сайта допускается индексация поисковыми системами нежелательного содержимого (технических «заглушек»), в том числе с использованием редиректов.
- Работающий отладочный код в исходном коде продукта.
- Большое количество кода, не учитывающего архитектуру и средства, предоставляемые фреймворком.
- Плагин не использует свой ID в качестве префикса для:
- имен собственных таблиц базы данных (правильный шаблон именования таблиц плагинов:
[app]_[plugin]_***
, например:shop_watermark_data
); - имен собственных полей, добавляемых в таблицы приложений;
- собственных переменных PHP-сессий;
- собственных переменных cookie;
- имен глобальных переменных или функций JavaScript на страницах, где код плагина выполняется совместно с кодом приложения и других плагинов.
- имен собственных таблиц базы данных (правильный шаблон именования таблиц плагинов:
- При удалении плагина не удаляются (с помощью файла
uninstall.php
) созданные им поля в таблицах базы данных (кроме обоснованных случаев, когда удаление этих полей может нарушить работу приложения). - В конфигурационном файле плагина
plugin.php
в качестве обработчиков хуков указаны несуществующие методы основного класса плагина. - Плагин оплаты, доставки или интеграции с SMS-провайдером использует функции и классы некоторого определенного приложения вместо того, чтобы учитывать возможность работы с любым количеством разных приложений, в которых есть поддержка таких плагинов.
- В методе
callbackHandler()
плагина оплаты отсутствует проверка на наличие, ненулевую длину и корректность значения хеша-подписи, отправляемого платежной системой, перед изменением статуса заказа приложением. - Плагин, выполняющий фискализацию платежей, не позволяет отключить функцию фискализации. Фискализация должна быть отключаемой функцией, потому что она может уже выполняться приложением или другим плагином.
- Плагин или приложение при обработке события либо в хелпере HTML-шаблона используют прерывание выполнения PHP-скрипта, например, с помощью функции
die()
. - Возможность загрузки на сервер файлов с PHP- или другим кодом, исполняемым на сервере при запросе файла по ссылке или другим способом.
Чего также не должно быть в обновлении продукта
- Создание новых таблиц и добавление полей в существующие таблицы базы данных другими способами, кроме использования файлов метаобновлений.
- Повторное выполнение кода в файлах метаобновлений вызывает возникновение ошибок.
- В обновлении продукта изменено содержимое его
db.php
и отсутствуют файлы метаобновлений для добавления/изменения таблиц уже установленного продукта. - В обновлении продукта отсутствуют файлы, имевшиеся в предыдущей версии, и отсутствуют файлы метаобновлений, удаляющие эти файлы.
Критичные недочеты в функциональности и описании продукта
- Неполностью локализованный интерфейс пользователя.
- Интуитивно непонятный интерфейс без подробного описания.
- Кириллические тексты и обозначения валют на снимках экрана для англоязычной версии продукта.
- Много грамматических ошибок и опечаток в интерфейсе и описании продукта (включая снимки экрана).
- Реферальные ссылки в интерфейсе или описании продукта.
- Критичные ошибки в логике работы продукта.