Secure Guestbook - это веб -приложение, написанное в PHP. Постоянство данных реализуется с MySQL.
Эта демонстрация была написана, чтобы продемонстрировать мой подход в ситуации: «У вас нет ничего, кроме PHP и MySQL. Вам нужно написать безопасное приложение. Покажите, что можете».
Это также может быть проблемой для вас: развернуть это приложение, пытать, взломать его, доказать, что есть недостатки на уровне приложений. Я на 95% уверен, что нет. Покажи мне, что я ошибаюсь.
Это приложение не о переосмыслении колеса. Да, есть много хороших рамок и либеров OpenSource.
Это больше связано с проблемой понимания внутренней природы структур, которые мы используем каждый день, и о том, как это влияет на безопасность, расширяемость и обслуживание приложений, которые мы создаем.
Задача состоит в том, чтобы написать демонстрационное приложение в Pure PHP без сторонних либеров.
Приложение представляет собой гостевую книгу со следующим образом: Пользовательская регистрация, вход и вход в систему, создание сообщения, редактирование, удаление, добавление ответа.
Задача состоит в том, чтобы написать демонстрационное приложение в Pure PHP без сторонних LIBS, чтобы продемонстрировать, что правильный дизайн-лучший способ создания безопасных приложений.
Несмотря на очевидное время, чтобы написать простое приложение упрощенным способом, существует еще более очевидный недостаток такого подхода: вы теряете контроль над приложением и удерживаете в ограничениях этой призовочной простоты.
Так что да, стоит написать простую, но функциональную структуру MVC, чем написать 10 неэффективных сценариев PHP, смешанных с HTML.
Середина для этой демонстрации была написана среда, похожая на MVC, была написана с нуля. Интерфейс в чистом нестабильном ультра-косметическом HTML.
Вся обработка проводится вокруг жизненного цикла объекта запроса, который мутируется во время следующей последовательности:
Поскольку задача была в первую очередь о написании приложения, настолько безопасным, насколько это возможно, в следующем списке меза, взятых для обеспечения соблюдения приложения:
Чтобы ограничить количество попыток взлома, локальный упрощенный Fail2ban-это приготовление.
Основные особенности:
Пороговые значения запрета на ошибки и запросы количества настраиваются.
Очень основное количество тестирования, предоставленных для подсистем костей.
Предварительные условия: PHP 7 (PDO_MYSQL, OPENSSL), композитор (только для PHPUNIT), HTTP Server
WEBAPP_BASEDIR - should point to src/ folder
WEBAPP_STORAGE_MYSQL_HOST
WEBAPP_STORAGE_MYSQL_USER
WEBAPP_STORAGE_MYSQL_PASSWORD
WEBAPP_STORAGE_MYSQL_DB
src/public с помощью документа Deformant index.php phpunit --bootstrap tests/bootstrap.php tests/ApplicationTest.php
getErrorsTillBan и getRequestsTillBan