Контрольный список проверки программного продукта

Что проверяют модераторы, когда вы отправляете свой продукт на публикацию в магазине Webasyst

Содержание...

Выполните все эти проверки самостоятельно, чтобы пройти модерацию с первой попытки.

Настройка тестового стенда

Чего не должно быть в программном продукте

  1. Возможность конфликтов с другими установленными продуктами.
  2. Более одной директории в корне архива с файлами продукта: архив должен содержать единственную директорию, имя которой совпадает с идентификатором продукта.
  3. Посторонний код в конфигурационных файлах db.php, app.php, plugin.php, settings.php, кроме описанного в документации. В routing.php в отдельных случаях допустим простой код, если без него нельзя обойтись.
  4. Файлы PHP-классов и HTML-шаблонов с нарушением правил именования файлов и PHP-классов, описанных в документации.
  5. Лишние файлы, не используемые в работе продукта.
  6. Директории с PHP-файлами, HTML-шаблонами и файлами локализации, не содержащие файлы .htaccess с директивой Deny from all.
  7. Лишние директивы в файлах .htaccess.
  8. Пустые директории.
  9. Вставка значений в SQL-запросы без использования плейсхолдеров (рекомендуется) или явного приведения значений к безопасному типу.
  10. В PHP-коде используются средства, недоступные в некоторых из версий начиная с 5.2, и описание этого ограничения отсутствует в системных требованиях.
  11. При использовании PHP-расширений не проверяется их наличие и в конфигурационном файле отсутствует описание соответствующего системного требования.
  12. При использовании функций file_get_contents, copy, get_headers, класса XMLReader и аналогичных инструментов применительно к удаленному ресурсу в коде продукта не проверяется значение параметра allow_url_fopen, которое должно быть также описано в системных требованиях.
  13. Сохранение, модификация или удаление файлов вне предназначенных для этого директорий wa-cache/, wa-config/ и wa-data/ — например, в wa-apps/, wa-content/, wa-installer/, wa-plugins/ и wa-system/.
  14. В именах файлов или директорий используются символы, не поддерживаемые разными операционными системами.
  15. Создание таблиц базы данных другими способами, кроме использования файлов db.php (кроме метаобновлений, см. ниже).
  16. Создание полей таблиц другими способами, кроме использования файлов install.php.
  17. Повторное выполнение кода в файле install.php вызывает возникновение ошибок.
  18. Сообщения об ошибках JavaScript в консоли браузера.
  19. Сообщения об ошибках в PHP-логах.
  20. Сообщения об ошибках в ответах сервера.
  21. Не выполняется экранирование символов при отображении данных, или выполняется излишнее экранирование.
  22. В интерфейсе пользователя неправильно обрабатывается ввод текста вида
    '"></textarea><script>alert(1)</script>
    Т. е. выполняется JavaScript-код вместо отображения текста.
  23. В качестве пути к бекенду используется жестко прописанный в коде фрагмент webasyst/.
  24. В URL для подключения к веб-странице файлов со сторонних ресурсов жестко задан протокол http:// — это может сделать нерабочим интерфейс, открытый через https://. Следует использовать универсальный способ указания URL для таких файлов с использованием фрагмента //.
  25. Во фронтенде сайта допускается индексация поисковыми системами нежелательного содержимого (технических «заглушек»), в том числе с использованием редиректов.
  26. Работающий отладочный код в исходном коде продукта.
  27. Большое количество кода, не учитывающего архитектуру и средства, предоставляемые фреймворком.
  28. Плагин не использует свой ID в качестве префикса для:
    • имен собственных таблиц базы данных (правильный шаблон именования таблиц плагинов: [app]_[plugin]_***, например: shop_watermark_data)
    • имен собственных полей, добавляемых в таблицы приложений
    • собственных переменных PHP-сессий
    • собственных переменных cookie
    • имен глобальных переменных или функций JavaScript на страницах, где код плагина выполняется совместно с кодом приложения и других плагинов
  29. При удалении плагина не удаляются (с помощью файла uninstall.php) созданные им поля в таблицах базы данных (кроме обоснованных случаев, когда удаление этих полей может нарушить работу приложения).
  30. В конфигурационном файле плагина plugin.php в качестве обработчиков хуков указаны несуществующие методы основного класса плагина.
  31. Плагин оплаты, доставки или интеграции с SMS-провайдером использует функции и классы некоторого определенного приложения вместо того, чтобы учитывать возможность работы с любым количеством разных приложений, в которых есть поддержка таких плагинов.
  32. В методе callbackHandler() плагина оплаты отсутствует проверка на наличие, ненулевую длину и корректность значения хеша-подписи, отправляемого платежной системой, перед изменением статуса заказа приложением.
  33. Плагин или приложение при обработке события либо в хелпере HTML-шаблона используют прерывание выполнения PHP-скрипта, например, с помощью функции die().
  34. Возможность загрузки на сервер файлов с PHP- или другим кодом, исполняемым на сервере при запросе файла по ссылке или другим способом.

Чего также не должно быть в обновлении продукта

  1. Создание новых таблиц и добавление полей в существующие таблицы базы данных другими способами, кроме использования файлов метаобновлений.
  2. Повторное выполнение кода в файлах метаобновлений вызывает возникновение ошибок.
  3. В обновлении продукта изменено содержимое его db.php и отсутствуют файлы метаобновлений для добавления/изменения таблиц уже установленного продукта.
  4. В обновлении продукта отсутствуют файлы, имевшиеся в предыдущей версии, и отсутствуют файлы метаобновлений, удаляющие эти файлы.

Критичные недочеты в функциональности и описании продукта

  1. Неполностью локализованный интерфейс пользователя.
  2. Интуитивно непонятный интерфейс без подробного описания.
  3. Кириллические тексты и обозначения валют на снимках экрана для англоязычной версии продукта.
  4. Много грамматических ошибок и опечаток в интерфейсе и описании продукта (включая снимки экрана).
  5. Реферальные ссылки в интерфейсе или описании продукта.
  6. Критичные ошибки в логике работы продукта.