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 :
| Niveau | Champ | Protege | Comportement |
|---|---|---|---|
| 1 - Domaine | WebDomain.userRightUuid | Tout le site | Non connecte = login / Sans permission = 403 |
| 2 - Page | WebDomainMenu.userRightUuid | Une page specifique | Meme logique : login ou 403 |
| 3 - Bloc/Champ | blockProperties.userRightNeeded | Un bloc ou champ | Bloc 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
- Trouver le WebContent - Requete sur triggerObject.uuid.
- Verifier l'evenement declare - className + functionName en whitelist.
- Valider les donnees - GG_CHECK_CONSTRAINT : droits, required, regex, types, captcha.
- Filtrer les champs inattendus - Tout champ POST non declare = supprime.
Protections automatiques
| Attaque | Protection BWEB |
|---|---|
| Acces 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 protege visible | Bloc jamais envoye au navigateur |
Comparaison : HTML brut vs BWEB
| Fonctionnalite | HTML brut | BWEB |
|---|---|---|
| Securite | A coder soi-meme | Automatique |
| Maintenance | Code source | Dev Panel visuel |
| Donnees 4D | REST custom | ORDA natif |
| CMS | A construire | Inclus |
| Droits | A coder | 3 niveaux declaratifs |
| Validation | A coder | Regex, types, required |
| Evenements | Non securises | Whitelist serveur |

