2009-11-02 7 views
0

Je fais un projet personnel de calcul des nombres, et je voudrais lancer plusieurs programmes sur plusieurs ordinateurs (peut-être même sur les serveurs d'Amazon un jour), et les avoir tous stocker et partager des données dans une base de données SQL commune, située sur mon compte d'hébergement Web. La société d'hébergement n'autorise pas les connexions étrangères directement au serveur SQL, mais je pensais écrire un script PHP léger qui résiderait sur le serveur et recevrait des commandes SQL des programmes distants en utilisant les commandes HTML POST, et passerait résultats en retour en html. Ensuite, je pourrais simplement utiliser une bibliothèque HTTP pour passer les commandes SQL directement dans le serveur distant et récupérer les résultats.Comment interroger la base de données MySQL à partir du client de manière sécurisée

Il est évident que c'est un problème de sécurité d'envoyer des commandes SQL nues à un serveur. Je pensais à utiliser une sorte de cryptage à clé partagée pour envoyer les commandes de post, et les résultats seraient bien de revenir non crypté. Alors, ma question est: à quoi ne pense-t-il pas? Je ne suis pas un expert en sécurité web, et il me manque évidemment quelque chose. Y a-t-il un trou de sécurité majeur ici impossible à combler? Ou existe-t-il une autre méthode ou une autre bibliothèque pour le faire que je n'ai pas trouvée?

Répondre

1

Il peut être préférable de stocker le SQL en tant que procédures stockées sur la base de données et d'appeler ces SP à partir de votre script. De cette façon, vous n'avez pas à envoyer de SQL simple (juste des paramètres) et il sera plus facile à maintenir.

Que voulez-vous dire par client? En tant que client d'une application Web (JavaScript), vous pouvez l'exécuter en effectuant un appel Ajax et renvoyer les données en tant que Json. Si vous voulez dire un client Windows, il est plus intéressant de créer un WebService au lieu d'une simple page php et de l'utiliser dans votre application. En ce qui concerne le cryptage, je pense que le passage par SSL est plus ou moins le meilleur/seul moyen d'assurer une sécurité totale.

0

Si votre société d'hébergement autorise SSH, effectuez un tunnel via une session SSH vers votre serveur MySQL avec votre client mysql.

Pour réduire le volume de ce que vous envoyez pour chaque requête, comme le suggère la réponse précédente, créez des procédures stockées pour ces requêtes et appelez-les uniquement avec les paramètres appropriés.

Questions connexes