Bonjour,
quelqu'un connaît-il un moyen pertinent de protéger l'accès aux bases de données en utilisant TMS Web Core ?
Merci. Cordialement. Gilles
Version imprimable
Bonjour,
quelqu'un connaît-il un moyen pertinent de protéger l'accès aux bases de données en utilisant TMS Web Core ?
Merci. Cordialement. Gilles
Si c'est du Web, la protection de la DB est déjà assurée* par l'aspect multi-tiers
(*ça dépend l'hébergeur et l'architecture du DataCenter)
le Client Web ne voit que le Serveur Web
le Serveur Web (ses instances load-balancées) est généralement le seul* à voir le Server DB (accès limité en Port et IP)
(* le seul avec les outils d'administration et de monitoring)
TMS Web Core, ça ressemble à IntraWeb.
Ce n'est pas un outil de protection mais tout dépend ce que l'on appelle protection?
Est-ce juste l'accès limité ?
Cela se gère par les routeurs et via le SGBD (Qui, Quoi, Où)
Imaginons, que tu aies une faille malgré tout, un mdp qui traine dans un fichier conf
Il faut chiffrer les données, c'est ta couche applicative Serveur (Delphi DataSnap, PHP, JS ...) qui se chargent de déchiffrer les données ou compare des empreintes si c'est un hashage plutôt
Et si le pirate n'as pas eu le mpd du SGBD mais accès à la machine hôte, le SGBD peut lui même chiffrer les données dans ses fichiers (en plus du chiffrement applicatif)
Tout ça c'est que la partie DB
Pour le client web,
- HTTPS c'est un début
- authentication OAUTH2 pour éviter que le MDP et Login transitent en même temps (le token sert ensuite pour savoir les droits de l'utilisateur)
- Chiffrement de données dans le REST, je sais que cela existe, avec des clés (fichier certificat locaux par exemple, une tannée à déployer) ... ça c'est "TMS XData" qui doit assurer quelques fonctionnalités
TMS Web Core génère des pages web avec du Javascript.
On n'accède pas à des bases de données depuis un projet TMS Web Core (à part une base en local dans le navigateur s'il est compatible) : on accède à des services en ligne qui fournissent l'accès aux données. Des composants permettent de le faire en REST sous la même forme que l'on a l'habitude dans les projets Delphi / C++Builder classiques, à savoir dataset / datasource.
Le code Javascript généré en mode déploiement est obfusqué mais reste lisible puisque c'est du texte et les navigateurs proposent des outils de débogage, donc n'importe qui ayant du courage pourra faire ce qu'il veut côté client. C'est le cas pour tous les sites internet côté navigateur web.
L'accès à la base de données ne se fait que par des programmes gérant une API REST ou pas côté serveur, c'est donc de ce côté que l'on doit protéger la base de données en ne laissant pas n'importe qui appeler les API sans avoir le droit de le faire.
HTTPS, mots de passe (idéalement chiffrés pour ne pas transiter en clair), codes d'accès unique (2FA), session en cookie ou dans les appels sont donc nécessaires, comme pour tout serveur internet mettant des données à disposition.
Bonjour,
merci pour vos réponses. Je reste cependant assez dubitatif.
Cordialement. Gilles
Et avec les autres solutions (php, Java, …) vous protégez comment l'accès à la BDD ? A moins de programmer comme un cochon la base de données n'est jamais en relation directe avec le client…
On peut même carrément blinder la sécurité en mettant la bdd derrière un firewall avec mappage de port ce qui fait que même si par miracle (ou mauvaise programmation) un client indélicat arriverait à récupérer les infos de connexions à celle ci depuis le serveur web il ne pourrait strictement rien en faire à moins d'avoir un accès complet au serveur, et alors là ce n'est pas tms webcore php ou autre .NET ou java qui pourront faire quelque chose…
@++
Dany
Essayez Unigui FrameWork from FMSoft.
Un super outil de développement qui ne changera pas vos habitudes de programmation avec Delphi.
Tout se fait coté Serveur et votre connexion a la BD se fait exactement comme vous le faites (DBGrid, DataSource, DataSet).
Oui, mais non. UniGUI et TMS Web Core ne fonctionnent pas du tout de la même façon et UniGUI génère un serveur, comme IntraWeb, ce qui implique un type d'hébergement spécifique sur lequel l'installer (Windows et Linux étant pris en charge).
TMS Web Core génère une page web et du JavaScript qu'on peut exécuter n'importe où, ce qui a un gros avantage (mais aussi les mêmes inconvénients que tout application web développée en JavaSCript).
Côté conception, que ce soit IntraWeb, UniGUI ou TMS Web Core, on reste dans du Delphi, avec des composants visuels et non visuels, des propriétés, des événements, ...
Chaque solution a ses spécificités, UniGUI n'est pas pertinent dans le cadre de cette discussion.
Me demande où Gilles en est arrivé de ses réflexions sur ce sujet, comme Dany d'ailleurs.