O Secure Guestbook é um aplicativo da Web, escrito no PHP. A persistência dos dados é implementada com o MySQL.
Esta demonstração foi escrita para demonstrar minha abordagem na situação "Você não tem nada, exceto PHP e MySQL. Você precisa escrever um aplicativo seguro. Mostre o que puder".
Isso também pode ser um desafio para você: implante este aplicativo, torturá-lo, hackear, provar que existem falhas no nível do aplicativo. Tenho 95% de certeza de que não existem. Mostre -me que estou errado.
Este aplicativo não é reinventar a roda. Sim, existem muitas boas estruturas e bibliotecas do OpenSource.
Isso se trata mais do desafio de entender a natureza interior das estruturas que usamos todos os dias e como isso afeta a segurança, a extensibilidade e a manutenção dos aplicativos que criamos.
A tarefa é escrever um aplicativo de demonstração no PHP puro sem LIBs de terceiros.
O aplicativo é um livro de visitas com os seguintes optos: inscrição no usuário, login e logout, mensagem Criar, editar, excluir e adicionar resposta.
A tarefa é escrever um aplicativo de demonstração no PHP puro, sem LIBs de terceiros para demonstrar que o design certo é a melhor maneira de criar aplicativos seguros.
Apesar da tentação óbvia de escrever um aplicativo simples de uma maneira simplificada, há uma falha ainda mais óbvia dessa abordagem: você perde o controle sobre o aplicativo e se afoga nas limitações dessa simplicidade divertida.
Então, sim, vale a pena escrever uma estrutura MVC simples, mas funcional, do que escrever 10 scripts PHP não estendidos, misturados com HTML.
Um ambiente semelhante a MVC em caldeira foi escrito do zero para esta demonstração. Interface em puro HTML Ultra-Simple não-simples.
Todo o processamento é feito em torno de um ciclo de vida de um objeto de solicitação que está sendo mutado durante a seguinte sequência:
Como o desafio era principalmente sobre escrever um aplicativo, o mais seguro possível, a seguinte lista de mesasas tomadas para fazer cumprir o aplicativo:
Para limitar o número de tentativas de invasão, o Fail2ban simplificado local é o Buil-In.
Os principais recursos são:
Os limiares de proibição para erros e solicitações quantidades são configuráveis.
Quantidade muito básica de testes fornecidos para subsistemas de backbone.
Pré -requisitos: PHP 7 (PDO_MYSQL, OpenSSL), compositor (somente para phpunit), servidor HTTP
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 with padrão document index.php phpunit --bootstrap tests/bootstrap.php tests/ApplicationTest.php
getErrorsTillBan e getRequestsTillBan , se necessário