2010-08-18 18 views
2

J'ai un formulaire qui est envoyé à une API externe. Il y a un paramètre appelé customer_token qui est passé comme champ de saisie. Il est utilisé pour l'authentification par l'API et chaque client reçoit un jeton. Le champ de saisie est visible dans Firebug de Firefox (même s'il s'agit d'un champ caché).La meilleure façon de cacher un champ de saisie de formulaire à partir de l'accès en utilisant firebug?

Comment le cacher?

options En utilisant javascript comme je l'ai d'abord pensé

Je pense en utilisant javascript pour créer ce champ de saisie au moment de l'exécution avant de soumettre le formulaire et enlever immédiatement le champ fonctionnera mais le champ apparaît momentanément. Donc, même si une personne ne peut pas l'obtenir manuellement, j'ai peur qu'un robot ou une araignée (je ne connais pas le terme exact - mais un script automatisé) puisse obtenir le jeton client. Y a-t-il une meilleure solution pour cela? Après la soumission du formulaire, le même formulaire reste affiché.

Utiliser concept de jeton unique comme suggéré par Ikke

Je ne sais pas comment cela va fonctionner? L'API a besoin de la valeur de jeton client correcte pour traiter toute demande. Ainsi, même pour générer un jeton unique et revenir, une demande avec le jeton client doit être envoyée. Ainsi, tout le monde peut voir la valeur de jeton de client et envoyer une demande pour obtenir un jeton unique et l'utiliser. Alors, comment cela résout-il le problème?

Résolue Vérifiez How to post form to my server and then to API, instead of posting directly(for security reasons)? Merci, Sandeepan

+1

L'utilisateur peut toujours surveiller toutes les requêtes HTTP, il suffit de cocher l'onglet "net" des Firebugs par exemple, afin que la valeur soit visible. – chelmertz

+1

Comme dit, il n'y a pas de "meilleure façon". En fait, il n'y a aucun moyen du tout. Même une simple ligne JavaScript dans la barre d'adresse peut récupérer cette valeur. Et les navigateurs comme Chrome ont des outils similaires à Firebug, donc cibler seulement celui-ci est une mauvaise idée ... :-) – PhiLho

Répondre

5

Ceci est pas possible. Firebug lit juste le DOM dans son état actuel, donc même s'il est ajouté à un stade ultérieur, il peut toujours être récupéré.

Cette méthode de sécurité est appelée Sécurité à travers l'obscurité et est une sorte de non-sécurité. Vous devrez le résoudre d'une autre manière, comme laisser le serveur faire la demande à la place.

Vous laissez l'utilisateur soumettre le formulaire au serveur. Ensuite, avec curl, vous appelez le service Web avec le code utilisateur correct.

+0

Comment fonctionnera le jeton unique? Si vous pouvez expliquer un peu. L'API a besoin de la valeur de jeton client correcte pour traiter toute demande. Ainsi, même pour générer un jeton unique et revenir, une demande avec le jeton client doit être envoyée. Ainsi, tout le monde peut voir la valeur de jeton de client et envoyer une demande pour obtenir un jeton unique et l'utiliser. Alors, comment cela résout-il le problème? –

+0

La requête est-elle directement envoyée à l'API, ou d'abord à votre serveur ou à quelque chose? – Ikke

+0

La demande est directement envoyée à l'API. Comment suivre l'approche d'envoi de la requête d'abord à mon serveur puis à l'API? L'envoi de la requête à mon serveur est correct. Mais, comment envoyer une requête de mon serveur à l'API? S'il vous plaît expliquez-moi, je pense que cela va vers la solution. Merci, Sandeepan –

0

Je ne pense pas que ce soit possible, j'ai peur. Firebug verra toujours l'élément s'il est inséré via Javascript, car il regarde l'arborescence DOM. Si cette entrée expose une faille de sécurité, le code du côté serveur doit être validé/corrigé.

Plus de détails sur l'API pourraient aider quelqu'un à répondre à cette question plus en détail.

J'espère que cette aide

+0

l'API a besoin que le jeton client soit passé comme champ de saisie –

+0

Le jeton client est-il toujours le même?Et d'où vient le jeton? – Rowan

+0

Oui actuellement c'est pareil. C'est un hash du nom de domaine du client –