2008-08-18 11 views
9

Quelle est la meilleure pratique pour s'assurer que certains appels ajax sur certaines pages ne sont acceptés que par des utilisateurs authentifiés?Accepter uniquement certaines requêtes ajax d'utilisateurs authentifiés

Par exemple:

Disons que j'ai une page principale appelée blog.php (je sais, la créativité abonde). Disons aussi qu'il y a une page appelée delete.php qui cherche le paramètre post_id puis supprime une entrée d'une base de données.

Dans cet exemple très artificiel, il y a un mécanisme sur blog.php qui envoie une requête via ajax à delete.php pour supprimer une entrée.

Maintenant, ce mécanisme ne sera disponible que pour les utilisateurs authentifiés sur blog.php. Mais qu'est-ce qui empêche quelqu'un d'appeler delete.php avec un tas de nombres aléatoires et de supprimer tout sur le site?

J'ai fait un test rapide où je mis une variable de session dans blog.php puis fait un appel ajax à delete.php pour revenir si la variable de session a été réglée ou non (il n'a pas été).

Quelle est la façon acceptée de gérer ce genre de chose?


OK. Je devais être fou la première fois que j'ai essayé ça.

Je viens de faire un autre test comme celui que j'ai décrit ci-dessus et cela a fonctionné parfaitement.

Répondre

8

Vous avez eu raison d'essayer d'utiliser des variables de session. Une fois que votre utilisateur s'authentifie, vous devez stocker ces informations dans sa session afin que chaque page suivante le voit. Assurez-vous d'appeler le session_start() sur les deux pages (blog.php et delete.php) avant d'accéder à $ _SESSION. Assurez-vous également que les cookies sont activés - et sinon, vous devez passer un paramètre supplémentaire dans la chaîne de requête, généralement PHPSESSID = < session_id()>.

3

Il est déconseillé de s'appuyer sur des sessions pour l'authentification sans effectuer d'actions supplémentaires. Read more on.

Questions connexes