Forums : Xul, Xbl, JS...

Aller à la discussion :  Plus récente Plus ancienne

# protection script php/RDF

Envoyé par : lionel

Date : 02/03/2006 16:00

Bonjour,

Je me posais une question: J'ai un client XUL qui s'authentifie via SOAP au serveur PHP. Suite à l'authentification, le client XUL va entre autre charger des fichiers RDF (en faite des scripts php qui génèrent du RDF). Le problème, c'est que ces scripts sont complètement libres d'accès suffit de faire http://..../fichierquivabien.php dans le navigateur et j'ai le RDF qui est généré.

Ce que je voudrais faire, c'est le protéger un minimum ces scripts, que me suggérer vous ?

Merci pour les astuces. Lionel

# Re: protection script php/RDF

Envoyé par : woogluf

Date : 02/03/2006 16:29

A prioris, il faut que tu vérifies que tu as une session ouverte lors du chargement de ton php et que dans ta session les informations d'authentification soient bien présentes.

Il faudrait donc que ton authentification via SOAP te crée la session et la renvoie au client.

Une fois l'identifiant de session récupéré, tu le passes en paramètre GET de ton appel au RDF, ou bien que tu crées le cookie qui va bien pour php.

# Re: protection script php/RDF

Envoyé par : lionel

Date : 03/03/2006 10:00

ok, ça marche impeccable. Je ne pensais pas que c'était possible.

Merci Lionel

# Re: protection script php/RDF

Envoyé par : woogluf

Date : 03/03/2006 11:57

Les infos que je t'ai envoyé étaient purement théoriques (je n'ai pas encore eu l'occasion/le temps de tester).

Pourrais-tu préciser comment tu as fait (avec quelques bouts de code), ça pourrait intéresser plein de monde.

Merci

# Re: protection script php/RDF

Envoyé par : laurentj

Date : 03/03/2006 12:18

Une fois l'identifiant de session récupéré, tu le passes en paramètre GET de ton appel au RDF, ou bien que tu crées le cookie qui va bien pour php.

Pas besoin de tout ça. À priori, quand tu crée une session en PHP, ça créer automatiquement un cookie (dit de session), qui contient le numéro de session. Et donc à chaque fois que tu fait une requete HTTP vers le serveur (SOAP, xmlhttprequest etc..), le cookie est renvoyée en même temps, ce qui permet à PHP de charger la session correspondante.

Pour le reste, tu as tout bon : il faut dans chaque script vérifier que dans la session il y ait bien l'information comme quoi l'utilisateur est identifié, information qui aura été crée lors de l'authentification. (cette info peut être un simple boolean $_SESSION['isConnected'] par exemple)

# Re: protection script php/RDF

Envoyé par : lionel

Date : 03/03/2006 14:08

Voici comment ça ce passe:

Le client XUL s'authentifie via SOAP, celui-ci renvoi session_id() et session_name() qui après traitement coté client est stockée dans des variables javascript.

Fichier du serveur SOAP:

 ...
 public function getSessionInfo(){
  return array(session_name(), session_id());
 }
 ...

Fichier javascript client:

 ...
 function verifSessionSoap() { 
var retour = _appelSoap("getSessionInfo", {});
if (!retour) return false;
var valeurs = String(retour[0].value).split(",");
gPhpSessName = valeurs[0];
gPhpSessId = valeurs[1];
 }
 ...

A l'appel du fichier RDF, j'ajoute les variables à l'URL (ex: http://monscriptquifaitduRDF.php?phpsessionid=' + gPhpSessName + '&phpsessionname=' + gPhpSessId)

Dans le script 'monscriptquifaitduRDF.php' je fais :

 ...
 session_start();
 if (isset($_GET['phpsessionname']) && isset($_GET['phpsessionid'])){
     if ($_GET['phpSessionName']==session_name() && $_GET['phpSessionId']==session_id()){
 ...

Et voilà.

# Re: protection script php/RDF

Envoyé par : woogluf

Date : 03/03/2006 16:49

Pas besoin de tout ça. À priori, quand tu crée une session en PHP, ça créer automatiquement un cookie (dit de session), qui contient le numéro de session. Et donc à chaque fois que tu fait une requete HTTP vers le serveur (SOAP, xmlhttprequest etc..), le cookie est renvoyée en même temps, ce qui permet à PHP de charger la session correspondante.

Justement, je n'étais pas sûr (parce que non testé) que le cookie session soit bien utilisé à chaque utilisation de xmlhttprequest.

Merci pour ta précision.

Du coup, c'est plus simple d'utiliser un id de session par cookie que par paramètres de requête (POST ou GET). :-)

# Re: protection script php/RDF

Envoyé par : laurentj

Date : 03/03/2006 17:26

surtout que passer l'id de session dans l'url, peut poser des problèmes de sécurité : ces urls sont souvent stockés dans les logs des serveurs web, et réapparaitre dans les pages web statistiques du site etc...

Lionel : donc normalement, en théorie, tout ce que tu as fait à propos de l'id de session est inutile

# Re: protection script php/RDF

Envoyé par : laurentj

Date : 03/03/2006 17:29

mm quoique, est-ce que les réponses soap peuvent contenir des cookies dans l'entête http ? à priori oui puisque c'est du http.. à vérifier.

Tu peux nous confirmer ça Lionel ? (c'est à dire en évitant de faire appel à ta fonction getSessionInfo et verifSessionSoap, et en evitant de passer les id de session lors de l'appel rdf) ?

# Re: protection script php/RDF

Envoyé par : woogluf

Date : 04/03/2006 15:13

Je n'ai pas testé avec SOAP, mais en tout cas, la session transmise en cookie fonctionne de manière transparente dans le cas d'un datasource RDF et d'appels XMLHttpRequest.

Il n'est plus possible de poster des messages dans ce forum.


Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.

Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™ sont des marques de la fondation Mozilla.