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 :
| Niveau | Champ | Protege | Comportement |
|---|---|---|---|
| 1 - Domaine | WebDomain.userRightUuid | Tout le site | Non connecte = login / Sans permission = 403 |
| 2 - Page | WebDomainMenu.userRightUuid | Une page spécifique | Meme logique : login ou 403 |
| 3 - Bloc/Champ | blockProperties.userRightNeeded | Un bloc ou champ | Bloc 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
- Trouver le WebContent - Requete sur triggerObject.uuid.
- Verifier l'événement déclaré - className + functionName en whitelist.
- Valider les données - GG_CHECK_CONSTRAINT : droits, required, regex, types, captcha.
- Filtrer les champs inattendus - Tout champ POST non déclaré = supprimé.
Protections automatiques
| Attaque | Protection BWEB |
|---|---|
| Accès non autorise | 3 niveaux de droits (domaine / page / bloc) |
| Injection de champs | Seuls les champs declares dans WebContent passent |
| Appel de fonction arbitraire | Whitelist serveur (className + functionName) |
| Man-in-the-middle | HTTPS force si cert.pem present |
| Bots / scraping | URLs malformees = 404, captcha |
| Bloc protégé visible | Bloc jamais envoye au navigateur |
Comparaison : HTML brut vs BWEB
| Fonctionnalité | HTML brut | BWEB |
|---|---|---|
| Sécurité | A coder soi-meme | Automatique |
| Maintenance | Code source | Dev Panel visuel |
| Données 4D | REST custom | ORDA natif |
| CMS | A construire | Inclus |
| Droits | A coder | 3 niveaux declaratifs |
| Validation | A coder | Regex, types, required |
| Événements | Non securises | Whitelist serveur |

