11

Criei um framework backend inspirado no NextJs

Há dois anos, desenvolvi um framework (RoxterJs) backend inspirado na convenção de rotas do Next.js, com foco em simplicidade e organização através da estrutura de pastas. Embora eu tenha ficado quase um ano sem dar manutenção devido à rotina de trabalho, continuo utilizando-o em projetos paralelos — e ele tem se mostrado estável e produtivo no dia a dia.

Recentemente, voltei a dedicar um tempo ao projeto, dei uma atualizada no código e melhorei o README para facilitar a adoção.

Se quiser testar ou contribuir, o pacote está disponível no npm:

👉 https://www.npmjs.com/package/roxterjs

Carregando publicação patrocinada...
6
2
0
2

Obrigado! O seu projeto também está incrível.
Faz um tempo que não trabalho com PHP — bateu até uma nostalgia!
Precisamos de mais frameworks assim, feitos por brasileiros.

0
0
-2

Cara, a ideia é maravilhosa, mas esta com erros de segurança. Vi alguns trechos do código brevemente, e ja achei um problema no arquivo avelpress/src/Admin
/AdminManager.php, no trecho current_page = _GET[ page ]; esta passando parâmetros sem nenhuma sanitização, isso é bem grave (e infelizmente uma falha bem comum). Se vc estiver usando ia pra codar, pede pra sanitizar com funções do wp para sanitizacao.

7

Que bom que gostou, mas não, não há nenhuma brecha de segurança, você está errado e vou explicar o porque:

O sanitizer eu sempre uso em todos meu plugins, usando especificamente as funções disponibilizadas pelo próprio Wordpress para isso, inclusive o wordpress barra o seu plugin, se você tem dados não sanitizados corretamente.

O Sanitizer é usado para limpar dados que serão processados, exibidos ou persistidos, seja no banco de dados ou em outro local, ou mesmo sem persistir, exibindo ele para o usário seja em algum html, pdf, xml, json ou qualquer outro recurso. Ele remove ou transforma dados perigosos para torná-los seguros para uso, evita qualquer tipo de injection, seja SQL injection, Stored XSS etc... Mas veja que onde eu usei sem, Em nenhum momento processei o dado ou perssisti ele, ou mesmo repassei ele pra frente, só validei se ele é igual á algo, e então o descartei. Não há nenhuma brecha de segurança nisso, te dou um prêmio se conseguir aplicar alguma injection nesse dado, e usar um sanetizer nesse caso seria irrelevante. Eu poderia colocar apenas por hábito, mas em nenhum momento por segurança nesse caso, como você disse.

É bem comum que Programador sem muita experiência se confudam o que precisa e não precisa ser sanetizado, por esse motivo o wordpress recomenda sanetizar tudo por hábito, e isso evita que onde realmente precise o programador não esqueça.

Só pelo fato de você achar que existe uma brecha de segurança nesse trecho do código, diz muito sobre o seu conhecimento de programação ou segurança. Ou mesmo ter cogitado que eu uso IA para codar rs, se você usa, que bom!

Segue a baixo um trecho sobre isso:

Quando você NÃO precisa sanitizar

Se o valor vindo de $_GET

  • Não é salvo no banco de dados
  • Não é exibido (echo/HTML/output)
  • Não é usado para executar lógica (como carregar arquivos, fazer queries, chamar funções dinâmicas, etc.)
  • É apenas comparado com uma lista fixa de strings internas (in_array) ou comparado com uma condição

Então NÃO existe risco real de segurança, e sanitizar passa a ser apenas boa prática, não uma necessidade.

A função só compara:

if ( current_page === page ) {
return true;
}

Ela não imprime o valor, não salva, não usa para carregar nenhum recurso

Então usar ou não sanitização nesse caso não muda nada para segurança.

O motivo de muitos desenvolvedores sanitizarem nesse caso específico seria mais por hábito, e não por questões de segurança como você disse

E é muito curioso você falar isso, pois em um código seu onde você sim está usando o $_GET para exibir ou processar os dados:
https://github.com/gmasson/carne-de-pagamento/blob/master/capa.php

Você está usando addslashes achando que está sanetizando quando a própria deocumentação do PHP diz exatamente ao contrário, abaixo o trecho exato tirado da documentaçao do PHP:

"O método addslashes() às vezes é usado incorretamente para tentar impedir a injeção de SQL . Em vez disso, funções de escape específicas do banco de dados e/ou instruções preparadas devem ser usadas." (referencia: https://www.php.net/manual/en/function.addslashes.php)

Mas eu entendo, pois pelo modo que foi escrito o seu código, me parece que você é iniciante, de qualquer modo, se você quer fuçar mais no meu código, pode fuçar a vontade, e se encontrar algum bug ou problema pode fazer uma PR, provavelmente tenha, mas felizmente não era o que você disse que era.

3

Fascinante! Estou justamente prestes a montar uma infraestrutura mais pesada com Node.js, e por coincidência o seu post apareceu no meu Google Discover no exacto momento em que eu ia abrir o terminal 😅.
Achei muito interessante a proposta — a ideia do seu framework backend me soa bem promissora.
É open source? Há algum lugar onde eu possa ler mais sobre a filosofia ou as decisões de design por trás do projecto? Estou considerando dar uma olhada mais a fundo e talvez testar em um ambiente real.

2

Opa! É open source sim.
Por enquanto, o único padrão aplicado é o de arquitetura baseado em rotas por aninhamento de pastas. Mas dá pra aplicar Clean Architecture, SOLID ou qualquer outra abordagem que você curtir... fica totalmente livre!

E claro, se tiver ideias ou quiser sugerir algo, vou curtir muito!

2
0