Securite

Principe fondamental

Zero-trust cote serveur - Le client n'est jamais digne de confiance. Chaque action est re-verifiee contre la structure WebContent stockee en base de donnees.

Les permissions sont declaratives (configurees dans le Dev Panel), pas codees en dur. Le developpeur n'a rien a coder pour la securite de base.

Pipeline de securite (5 etapes)

Chaque requete web traverse ce pipeline automatique :

Requete HTTP
     |
     v
1. HTTPS force       (cert.pem = redirect HTTPS)
     |
     v
2. Licence + Session (Verification composant + session)
     |
     v
3. Resolution URL    (Domaine > Page > Parametres)
     |
     v
4. Hook base hote    (BSPH_WEB_ON_CONNECTION)
     |
     v
5. Controle securite (Droits, pages, events, POST)
     |
     v
   Code metier

3 niveaux de droits

Les droits d'acces sont declaratifs et imbriques :

NiveauChampProtegeComportement
1 - DomaineWebDomain.userRightUuidTout le siteNon connecte = login / Sans permission = 403
2 - PageWebDomainMenu.userRightUuidUne page specifiqueMeme logique : login ou 403
3 - Bloc/ChampblockProperties.userRightNeededUn bloc ou champBloc non envoye dans le HTML + donnees POST rejetees
"Pas autorise a voir un bouton ? Le HTML du bouton n'existe pas."
Les blocs proteges ne sont jamais envoyes au navigateur.

Validation des actions

  1. Trouver le WebContent - Requete sur triggerObject.uuid.
  2. Verifier l'evenement declare - className + functionName en whitelist.
  3. Valider les donnees - GG_CHECK_CONSTRAINT : droits, required, regex, types, captcha.
  4. Filtrer les champs inattendus - Tout champ POST non declare = supprime.

Protections automatiques

AttaqueProtection BWEB
Acces non autorise3 niveaux de droits (domaine / page / bloc)
Injection de champsSeuls les champs declares dans WebContent passent
Appel de fonction arbitraireWhitelist serveur (className + functionName)
Man-in-the-middleHTTPS force si cert.pem present
Bots / scrapingURLs malformees = 404, captcha
Bloc protege visibleBloc jamais envoye au navigateur

Comparaison : HTML brut vs BWEB

FonctionnaliteHTML brutBWEB
SecuriteA coder soi-memeAutomatique
MaintenanceCode sourceDev Panel visuel
Donnees 4DREST customORDA natif
CMSA construireInclus
DroitsA coder3 niveaux declaratifs
ValidationA coderRegex, types, required
EvenementsNon securisesWhitelist serveur