comment empecher l'appel d'une page php avec son url?

comment empecher l'appel d'une page php avec son url? - PHP - Programmation

Marsh Posté le 07-08-2013 à 11:55:43    

Bonjour,
Lorque j'ai commencé à développer mon application web, j'ai toujours appelé mes script php en saisissant leurs chemins dans l'endroit réservé à l'url. Par exemple:

Code :
  1. localhost/test.php


Normalement je devrait seller l'entrée à l'application avec une page d'authentification et c'est exactement ce que j'ai fait.
Le problème est que j'ai remarqué que je peux toujouts appelé les autres page en entrant leurs url. je sais pas comment faire pour empêcher cela!!
 
merci

Reply

Marsh Posté le 07-08-2013 à 11:55:43   

Reply

Marsh Posté le 07-08-2013 à 11:59:01    

Ben déjà, en début de chaque script, tu vérifies l'existence d'une session, pourquoi pas le HTTP_REFERER aussi.
 
Pour blinder ça, regardes aussi du côté du .htaccess ;)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 07-08-2013 à 12:17:13    

je ne sais pas comment utiliser le test. mais par contre j'ai essayé avec un

Code :
  1. include (authentification.php)


avec cette méthode je ne peux plus afficher les pages directements mais quand j'essai de m'authentifier pour entrer j'ai l'erreur suivant:

Code :
  1. Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 19456 bytes) in /var/www/authentification.php on line 30


 
je sais pas comment régler le problème

Reply

Marsh Posté le 07-08-2013 à 13:52:41    

Faut pas faire un include de ta page d'authentification sur tous tes scripts gros mal, sinon, si ta page d'accueil appel l'un de ces scripts (genre une lib de fonctions), tu va faire des includes de manière récursive, d'où tes pbs d'alloc de mémoire, je pense  :pt1cable:  
 
Quand je parlais de tester l'existence de la session en début de session, c'est un truc du genre :

Code :
  1. if (!isset($_SESSION['idsession'])) {
  2.   // redirection sur la page de connexion
  3.   header("location: authentification.php" );
  4. }


 
Pour le $_SERVER['HTTP_REFERER'], ça te permet de vérifier que l'url du script php a été appelée par une page de ton appli.
 
Mais tu feras pas l'impasse sur le .htaccess pour ce que tu veux faire (pris en compte par apache et non php).


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 07-08-2013 à 14:09:32    

Merci c'est vrai que c'est très simple avec cette méthode et ça marche impécable.

Reply

Marsh Posté le 07-08-2013 à 14:33:18    

J'ai en fait un petit souci,
ta méthode fonctionné très bien si l'utilisateur se déconnecte en appuyant sur un bouton ou en faisant mache arrière avec le bouton select. dans ce cas pas de problème car la session session['username'] est détruite. Le problème est que s'il ferme la page avec le bouton crois, la session n'est pas détruite et ce n'est pas sécurisée.
Comment est ce que je peux détecter la fermeture brusque d'une page web sans utiliser onUnload de JS?
merci

Reply

Marsh Posté le 07-08-2013 à 14:44:51    

Tu peux pas. Par défaut, une session php expire au bout de 20 min d'inactivité. Tu peux changer cette durée dans le php.ini.
 
Mais c'est bien pour ça que je t'ai dit que tu feras pas l'économie du .htaccess pour sécuriser comme tu le voulais.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Sujets relatifs:

Leave a Replay

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