2011-12-10 12 views
5

Je suis sûr que cette question a déjà été posée, mais je ne trouve pas de fil de discussion qui m'explique de manière logique.Comment "sécuriser" les appels AJAX?

Je crée un bookmarklet/plugin de navigateur écrit en Javascript. Ce script effectue des appels à une API, en envoyant efficacement une information d'activité d'un utilisateur d'un site à un autre. (Pensez à faire un tweet lorsqu'un utilisateur publie un statut facebook)

Ce site charge javascript dans le site. L'API que j'utilise nécessite la génération d'un hachage MD5 à l'aide d'un code secret API. Ce n'est pas un problème, je fais un appel ajax à un script PHP que j'héberge ailleurs, qui renvoie la chaîne correcte. Le problème est que je ne veux pas que l'utilisateur puisse appeler ce même script pour générer ses propres chaînes, avec le secret intégré pour abuser de l'API. Est-ce que c'est un moyen que je peux seulement autoriser les appels à cette API quand je veux les faire?

Ou peut-être que j'approche de la mauvaise direction.

Répondre

0

1) vous devriez ouvrir un jeton sur votre DB comme GUID.

ce guid représentera des informations et ne pourra être exécuté qu'une seule fois (mettre un champ db dans une table appelée bit "isAlreadyuse").

maintenant,

lorsque le ajax sera lui-même appel - vous envoyez ce guid au serveur.

le serveur si le guid existe

et émet sa logique et mettre à jour ledomaine à « 1 ».

3

Vous ne pouvez pas dicter comment un client exécute votre javascript. Il n'y a aucun moyen de créer une requête "sécurisée", ou de s'assurer qu'elle n'a pas été modifiée par un attaquant. C'est la nature du système client/serveur. La page elle-même peut être modifiée en utilisant GreaseMonkey et toute demande peut être modifiée ou relue en utilisant TamperData.

+0

Les attaques par relecture peuvent être protégées contre ... mais cela suppose qu'il s'agit d'une relecture et non d'une opération [initialement] autorisée. –

+1

@pst Si vous pouvez le faire en JavaScript, alors un attaquant peut aussi le faire en JavaScript. – rook