TOMCAT en PHP - Utiliser sockets en multi-connexions

TOMCAT en PHP - Utiliser sockets en multi-connexions - PHP - Programmation

Marsh Posté le 10-10-2008 à 19:06:55    

Bonjour à tous !
 
Je vais essayer d'être clair.
Je suis au sein d'un réseau interne qui possède une ouverture vers l'extérieur pour afficher notamment mon site web, c'est la machine E.
Dans mon réseau j'ai une machine M maitre et une machine avec une base de données B.
Je voudrais que les internautes puissent effectuer des requêtes via E en passant par M sur la machine B.
Autrement dit, seule la machine M peut faire des requêtes sur B.
Un firewall bloque toutes les communications depuis E vers M.
Je sais que Tomcat le fait via un port particulier que celui-ci écoute en permanence.
Le problème c'est que Tomcat est en java. Je voudrais savoir s'il y a un équivalent en php ou si ça peut se faire à la main.  
J'ai lu un truc sur les sockets ça semble faire ce dont j'ai besoin, mais pas sur ...
Question sécurité ça à pas l'air d'être le must !  
J'ai trouvé ça qui marche plutôt pas mal :
http://www.php.net/manual/fr/ref.sockets.php
Voir le message de firefly2442 at hotmail dot com
29-Mar-2008 01:31
 
Bon aprés niveau sécurité ça a pas l'air carnaval ...
Et pis y a pas la gestion des multi-connexions.
Je trouve pas un script clair avec des explications pour faire du multi-connexions.
En fait, j'ai une interface qui doit afficher des informations en fonction de ce que l'on choisi de cliquer.
Les informations à afficher proviennent d'une base de données. Firewall et réseau interne font qu'il est interdit pour la machine ouverte vers l'extérieur (DMZ) de communiquer avec la base de données. Pour cela il faut qu'elle passe par la machine maitre qui elle a le droit.
J'ai donc choisi d'ouvrir un port et de communiquer par socket.
Je me suis aidé de plusieurs scripts simples et j'ai pu voir que ça fonctionne bien.
Le problème c'est que ça ne gère pas plusieurs clients.
On m'a conseillé de faire du "fork" ? avec pcntl_fork ...
D'autres me parlent de thread ?
Mais bon bref je ne comprends pas grand chose.
 
D'avance merci pour toutes vos réponses !

Reply

Marsh Posté le 10-10-2008 à 19:06:55   

Reply

Marsh Posté le 10-10-2008 à 20:54:26    

ledzep2 a écrit :


Je voudrais que les internautes puissent effectuer des requêtes via E en passant par M sur la machine B.
Un firewall bloque toutes les communications depuis E vers M.


 
ya pas comme une contradiction là?[:dawa]
 
Je zappe le reste qui mentionne tomcat, c'est un tissus d'âneries.


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 13-10-2008 à 16:22:42    

Ah voui mais le firewall c'est moi qui le gère donc si faut ouvrir un port, c'est possibbbbb !
 
Quoi tissu d'anerie ?

Reply

Marsh Posté le 13-10-2008 à 16:25:30    

ledzep2 a écrit :

Ah voui mais le firewall c'est moi qui le gère donc si faut ouvrir un port, c'est possibbbbb !


 
Alors tu ouvres directement un accès sur le bon port pour interroger la base de données en php, pourquoi tu te fais chier?[:mlc]
 

ledzep2 a écrit :


Quoi tissu d'anerie ?


n'importe-quoi, si tu préfères.[:dawa]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 13-10-2008 à 16:38:24    

Beh j'ai testé le coup des sockets, mais le problème, c'est pour les multi-connexions comment faire ?
J'explique mal ou quoi ?
J'ai l'air de me faire chier ? Je passe à côté d'un truc tout simple c'est ça ?
Beh je vois pas, alors si tu peux prendre 5 minutes pour me faire une explication claire ... c'est bienvenu, je suis pas un king du php loin de là, mais je crois pas être totalement idiot, alors ça nous laisse une chance !  :sol:

Message cité 1 fois
Message édité par ledzep2 le 13-10-2008 à 16:38:41
Reply

Marsh Posté le 13-10-2008 à 16:41:01    

ledzep2 a écrit :

Beh j'ai testé le coup des sockets, mais le problème, c'est pour les multi-connexions comment faire ?
J'explique mal ou quoi ?
J'ai l'air de me faire chier ? Je passe à côté d'un truc tout simple c'est ça ?
Beh je vois pas, alors si tu peux prendre 5 minutes pour me faire une explication claire ... c'est bienvenu, je suis pas un king du php loin de là, mais je crois pas être totalement idiot, alors ça nous laisse une chance !  :sol:


m'enfin si c'est toi qui gères le firewall entre les serveurs, pourquoi tu te connectes pas directement du serveur web vers le serveur de données?[:mlc]
C'est quoi comme base de données?


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 13-10-2008 à 16:51:45    

skeye a écrit :


m'enfin si c'est toi qui gères le firewall entre les serveurs, pourquoi tu te connectes pas directement du serveur web vers le serveur de données?[:mlc]
C'est quoi comme base de données?


 
1- je ne veux pas une connexion directe pour ne pas que l'on puisse crééer des requetes non autorisées. Je veux augmenter la difficulté pour pirater ma bdd en mettant un intermédiaire qui aura des requêtes pré-construites à l'avance et limitées en portée.
 
2- MySQL, quant au contenu, hautement sensible.

Reply

Marsh Posté le 13-10-2008 à 17:02:36    

ledzep2 a écrit :


1- je ne veux pas une connexion directe pour ne pas que l'on puisse crééer des requetes non autorisées. Je veux augmenter la difficulté pour pirater ma bdd en mettant un intermédiaire qui aura des requêtes pré-construites à l'avance et limitées en portée.

 

Passer par une autre machine n'a aucun intérêt,si l'appli installée sur la machine accessible de l'extérieur n'est pas sûre il y aura une faille de toute manière.

 
ledzep2 a écrit :

2- MySQL, quant au contenu, hautement sensible.

 

Se connecter à une bdd sur une autre machine avec mysql est trivial...après à toi de coder ton appli proprement, si tu ne veux pas qu'il y ait des fuites sur des données sensibles - ce que tu devrais faire de toute manière en utilisant un système farfelu comme celui que tu envisageais...

Message cité 1 fois
Message édité par skeye le 13-10-2008 à 17:03:14

---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 13-10-2008 à 17:10:35    

skeye a écrit :


 
Passer par une autre machine n'a aucun intérêt,si l'appli installée sur la machine accessible de l'extérieur n'est pas sûre il y aura une faille de toute manière.
 


 
Au contraire de ce que je pensais.
Imaginons que le pirate fasse une injection SQL, dans le cas ou il y a un intermédiaire qui ne lit qu'un id de requête par exemple, tu retournes une erreur.
Dans l'autre le type a accès à ce qu'il veut.
Bien sûr je compte me prémunir des injections SQL mais j'imagine qu'il doit y avoir des tonnes d'autres exemples qui fonctionnent sur le même principe.
 
 

skeye a écrit :


 
Se connecter à une bdd sur une autre machine avec mysql est trivial...après à toi de coder ton appli proprement, si tu ne veux pas qu'il y ait des fuites sur des données sensibles - ce que tu devrais faire de toute manière en utilisant un système farfelu comme celui que tu envisageais...


 
Se connecter à une bdd MySQL est simple je te l'accorde.
Ce qui est intéressant c'est mon système farfelu qui permettrait des fuites sur les données sensibles. Là je suis grandement intéressé. De quelle manière ?

Reply

Marsh Posté le 13-10-2008 à 17:15:03    

ledzep2 a écrit :


Au contraire de ce que je pensais.
Imaginons que le pirate fasse une injection SQL, dans le cas ou il y a un intermédiaire qui ne lit qu'un id de requête par exemple, tu retournes une erreur.
Dans l'autre le type a accès à ce qu'il veut.
Bien sûr je compte me prémunir des injections SQL mais j'imagine qu'il doit y avoir des tonnes d'autres exemples qui fonctionnent sur le même principe.

 

Se connecter à une bdd MySQL est simple je te l'accorde.
Ce qui est intéressant c'est mon système farfelu qui permettrait des fuites sur les données sensibles. Là je suis grandement intéressé. De quelle manière ?


Si ton système permet à l'appli php d'exécuter des requêtes d'une manière ou d'une autre, elle permet à une faille sur cette appli php d'exécuter n'importe-quelle requête.
Ton système est une perte de temps qui serait mieux utilisé à peaufiner l'appli.

 


Enfin bref, si tu tiens tant que ça à coller un intermédiaire entre ton site et ta base, tu n'as qu'à insérer une couche de webservices qui seront sur ta 3ème machine...pas d'histoires de sockets ou conneries de ce genre, et tu ne crées ques des webservices exposant des données safe...seul le serveur web ayant accès aux webservices, évidemment.

Message cité 1 fois
Message édité par skeye le 13-10-2008 à 17:19:06

---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 13-10-2008 à 17:15:03   

Reply

Marsh Posté le 13-10-2008 à 17:20:44    

skeye a écrit :


 
Enfin bref, si tu tiens tant que ça à coller un intermédiaire entre ton site et ta base, tu n'as qu'à insérer une couche de webservices qui seront sur ta 3ème machine...pas d'histoires de sockets ou conneries de ce genre, et tu ne crées ques des webservices exposant des données safe...seul le serveur web ayant accès aux webservices, évidemment.


 
Ca à l'air intéressant. Aurais tu une breve description ou des liens en cohérence avec ce que tu dis ?
 

Reply

Marsh Posté le 13-10-2008 à 17:21:20    

ledzep2 a écrit :


 
Ca à l'air intéressant. Aurais tu une breve description ou des liens en cohérence avec ce que tu dis ?
 


http://fr3.php.net/manual/fr/book.soap.php


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 13-10-2008 à 17:58:51    

...et sinon une solution encore plus simple si ton appli web ne doit consulter que les infos non sensibles de ta base c'est de te connecter à ta base avec un utilisateur qui n'a le droit de voir que certaines données, non sensibles...tu peux très bien créer des vues qui n'exposent que des données ok, et donner uniquement le droit à un utilisateur d'utiliser ces vues...bref, il y a plusieurs solutions forcément plus simples à mettre en place et meilleures que ton idée de départ.


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 14-10-2008 à 10:15:35    

Ca le coup de l'utilisateur selon le profil, j'y avais pensé. Le truc c'est qu'en plus de l'extérieur on doit pouvoir avoir accès aux données sensibles.
En fait selon l'utilisateur il peut même y avoir des modifications de la bdd .

Reply

Marsh Posté le 14-10-2008 à 10:21:42    

ledzep2 a écrit :

Ca le coup de l'utilisateur selon le profil, j'y avais pensé. Le truc c'est qu'en plus de l'extérieur on doit pouvoir avoir accès aux données sensibles.
En fait selon l'utilisateur il peut même y avoir des modifications de la bdd .


 
Alors il va falloir dans tous les cas blinder l'appli elle-même.  
Mais pour éviter des accès aux données non prévus ça reste une idée raisonnable de créer des webservices qui remplissent uniquement les fonctions dont tu as vraiment besoin...


Message édité par skeye le 14-10-2008 à 10:30:19

---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 14-10-2008 à 11:12:35    

Ca me fait un peu mal de me mettre à apprendre encore un nouveau style de language, des nouveaux concepts, mais bon si y a pas le choix.
Merci pour ton aide en tout cas.  :sol:

Message cité 1 fois
Message édité par ledzep2 le 14-10-2008 à 11:12:55
Reply

Marsh Posté le 14-10-2008 à 11:13:14    

ledzep2 a écrit :

Ca me fait un peu mal de me mettre à apprendre encore un nouveau style de language, des nouveaux concepts, mais bon si y a pas le choix.


bah si t'as le choix...tout simplement coder une appli classique bien verrouillée...[:dawa]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 14-10-2008 à 11:43:36    

skeye a écrit :


bah si t'as le choix...tout simplement coder une appli classique bien verrouillée...[:dawa]


 
Beh c'est vrai que je me tate, vu mon peu d'expérience en sécurité.
Je crois que je suis un peu parano !
 
Je m'appuie sur ça :
 
ce lien
ce lien
et surtout ce lien
 
Suffira-ce ?
Arriverais-je à tout digérer ?
Affaire à suivre ...

Reply

Marsh Posté le 14-10-2008 à 11:49:55    

En php une fois que tu as désactivé register_globals et que tu passes systématiquement tes données aux requêtes via des variables de requêtes préparées t'as fait les 3/4 du boulot.
Après c'est le fonctionnement interne de l'appli...


---------------
Can't buy what I want because it's free -
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed