2010-07-22 9 views
3

Désolé si cela a déjà été posée, je l'ai fait une recherche Google et ne pouvait pas trouver la réponse.Autoriser seulement les jquery pour charger certaines pages

Je suis nouveau à jquery et je me demande comment protéger mes pages back-end d'être chargé par les utilisateurs externes?

Par exemple, si mon jquery .post ou .get appelle « delete-post.php » Je veux que le jquery pour pouvoir charger cette page. Je ne veux pas qu'un utilisateur de John Doe sache qu'il peut publier des données de son propre formulaire sur delete-post.php et supprimer tout ce qu'il veut, ou en appelant delete-post.php? Id = whatever_id_he_wants.

J'espère que cela a un sens? Comme je l'ai dit je suis nouveau à jQuery et je m'interroge sur la sécurité.

+0

Bienvenue sur SO et bonne question :) – Sarfraz

+4

ne peut pas le faire avec jQuery - javascript n'a jamais été destiné à la sécurité. Le mieux est de faire quelque chose côté serveur. –

+0

Je suis d'accord, car tout utilisateur peut modifier le javascript sur une page. Vous pouvez soit créer un système d'authentification en php ou vous pouvez utiliser sorcière .htaccess est beaucoup plus facile à mettre en place –

Répondre

4

La seule chose que vous pouvez faire, et quelque chose que vous devriez faire de toute façon, est vérifier qu'un utilisateur est connecté et est autorisé à supprimer un message. Vous faites cela sur le script delete-post.php en vérifiant les variables de session.

Le problème ici n'est pas avec jQuery ou AJAX, si c'était une forme statique normale, l'utilisateur serait quand même capable de comprendre comment publier sur cette page delete-post.php quand même.

Espérons que cela aide.

Edit: Et bienvenue à SO. :)

0

avez pour valider votre saisie côté serveur. Javascript n'est pas capable de vous protéger ici. Dans votre fichier de suppression-post.php, vous devez faire multiples contrôles pour vous assurer un utilisateur autorisé sur votre site appelle le script et vous pouvez utiliser une sorte de clé de validation unique pour autoriser l'action.

0

Vous pouvez vérifier si la requête entrante est du genre de xhttp/ajax, mais cela ne vous dira comment le poste a été fait. Vous aurez besoin de configurer au moins les bases d'une session authentifiée afin de déterminer si un utilisateur a l'autorisation de supprimer un message. Cette autorité sera reportée dans les demandes ajax.

Si vous cherchez quelque chose de vraiment rapide et sale, considèrent simplement http l'authentification d'accès de base, ou si elle est pour vous seul à modéré, une adresse IP codée en dur ne serait pas la pire situation que vous pourriez être.

en tout état de cause, vous ne pouvez pas vraiment faire toute sorte de vérification de l'utilisateur du côté client comme vous voulez, car il est trop facilement usurpée.

0

Vous devriez regarder en utilisant des jetons de sécurité (également appelé « nonce », qui est un choix intéressant de la terminologie si vous arrive d'être un Brit).

Un nonce est conçu pour faire en sorte que toute demande provient de l'endroit où vous vous attendiez à provenir.

avoir une lecture à travers ce guide pour voir une implémentation simple de ce concept (tout cela mais le bit qui est particulièrement pertinent à cette question est le peu de exploits CSRF!): http://php.robm.me.uk/

En aparté, jamais jamais faire quelque chose de destructeur à l'aide d'une requête GET. Déjà. Règle cardinale. Toujours utiliser POST. En fait, certains considèrent également une bonne pratique de ne jamais fait quoi que ce soit supprimer de l'application, que directement à partir de la base de données - il suffit de mettre un chèque de « supprimé » pour effectuer une suppression douce au lieu. Mais ce n'est pas directement pertinent à cette question, bien sûr.:-)

Questions connexes