Sécurité

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 données.

Les permissions sont declaratives (configurees dans le Dev Panel), pas codees en dur. Le développeur n'a rien a coder pour la sécurité de base.

Pipeline de sécurité (5 étapes)

Chaque requête 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'accès sont declaratifs et imbriques :

NiveauChampProtegeComportement
1 - DomaineWebDomain.userRightUuidTout le siteNon connecte = login / Sans permission = 403
2 - PageWebDomainMenu.userRightUuidUne page spécifiqueMeme logique : login ou 403
3 - Bloc/ChampblockProperties.userRightNeededUn bloc ou champBloc non envoye dans le HTML + données 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'événement déclaré - className + functionName en whitelist.
  3. Valider les données - GG_CHECK_CONSTRAINT : droits, required, regex, types, captcha.
  4. Filtrer les champs inattendus - Tout champ POST non déclaré = supprimé.

Protections automatiques

AttaqueProtection BWEB
Accès 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 protégé visibleBloc jamais envoye au navigateur

Comparaison : HTML brut vs BWEB

FonctionnalitéHTML brutBWEB
SécuritéA coder soi-memeAutomatique
MaintenanceCode sourceDev Panel visuel
Données 4DREST customORDA natif
CMSA construireInclus
DroitsA coder3 niveaux declaratifs
ValidationA coderRegex, types, required
ÉvénementsNon securisesWhitelist serveur