Sécurité

Principe fondamental

Zero-trust côté serveur - Le client n'est jamais digne de confiance. Chaque action est re-vérifiée contre la structure WebContent stockée en base de données.

Les permissions sont déclaratives (configurées dans le Dev Panel), pas codées en dur. Le développeur n'a rien à coder pour la sécurité de base.

Pipeline de sécurité (5 étapes)

Chaque requête web traverse ce pipeline automatique :

Requête HTTP
     |
     v
1. HTTPS forcé       (cert.pem = redirect HTTPS)
     |
     v
2. Licence + Session (Vérification composant + session)
     |
     v
3. Résolution URL    (Domaine > Page > Paramètres)
     |
     v
4. Hook base hôte    (BSPH_WEB_ON_CONNECTION)
     |
     v
5. Contrôle sécurité (Droits, pages, events, POST)
     |
     v
   Code métier

3 niveaux de droits

Les droits d'accès sont déclaratifs et imbriqués :

NiveauChampProtégéComportement
1 - DomaineWebDomain.userRightUuidTout le siteNon connecté = login / Sans permission = 403
2 - PageWebDomainMenu.userRightUuidUne page spécifiqueMême logique : login ou 403
3 - Bloc/ChampblockProperties.userRightNeededUn bloc ou champBloc non envoyé dans le HTML + données POST rejetées
"Pas autorisé à voir un bouton ? Le HTML du bouton n'existe pas."
Les blocs protégés ne sont jamais envoyés au navigateur.

Validation des actions

  1. Trouver le WebContent - Requête sur triggerObject.uuid.
  2. Vérifier 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 autorisé3 niveaux de droits (domaine / page / bloc)
Injection de champsSeuls les champs déclarés dans WebContent passent
Appel de fonction arbitraireWhitelist serveur (className + functionName)
Man-in-the-middleHTTPS forcé si cert.pem présent
Bots / scrapingURLs malformées = 404, captcha
Bloc protégé visibleBloc jamais envoyé au navigateur

Comparaison : HTML brut vs BWEB

FonctionnalitéHTML brutBWEB
SécuritéÀ coder soi-mêmeAutomatique
MaintenanceCode sourceDev Panel visuel
Données 4DREST customORDA natif
CMSÀ construireInclus
DroitsÀ coder3 niveaux déclaratifs
ValidationÀ coderRegex, types, required
ÉvénementsNon sécurisésWhitelist serveur