Question

Je suis venu à travers La bookmarklet Evernote et je me demandais comment cela a fonctionné.

Vous pouvez simplement le faire glisser vers votre signet et accédez à une page Web, cliquez sur ce bookmarklet et il vous demandera d'abord vous connecter. Tout ce que j'ai déjà fait et savoir comment il fonctionne.

Le bit que je ne comprends pas est que lorsque vous vous connectez ils vous authentifier et vous permettent de soumettre des choses (dans ce cas, une URL du site, etc.). Lorsque vous avez terminé le bookmarklet qui a placé une petite superposition sur la page que vous consultez disparaît.

  

Quand vous allez à un nouvel onglet et utilisez la   bookmarklet à nouveau, vous êtes toujours connecté   dans! Comment?

Je peux voir qu'ils utilisent iFrame lorsque leur bookmarklet charge la superposition sur la page - mais ils ne mettre les cookies ou quelque chose? Si oui, est-ce sécurisé? Tout le monde peut modifier les valeurs? Ou sont-ils utilisent une sorte de système privé / clé publique

BTW, je voudrais reproduire ce bookmarklet en utilisant PHP / Javascript (JQuery peut-être). Je vous serais reconnaissant si quelqu'un peut me aider à comprendre comment ils le font ou me pointer vers des tutoriels pertinents.

Merci à tous pour toute aide.

Était-ce utile?

La solution

Pour commencer, voici le code du bookmarklet exécute:

(function(){
    EN_CLIP_HOST = 'http://www.evernote.com';

try{
    var x = document.createElement('SCRIPT');
    x.type='text/javascript';
    x.src = EN_CLIP_HOST + '/public/bookmarkClipper.js?' + (new Date().getTime()/100000);

    document.getElementsByTagName('head')[0].appendChild(x);

} catch(e) {

    location.href = EN_CLIP_HOST + '/clip.action?url=' + encodeURIComponent(location.href) + '&title=' + encodeURIComponent(document.title);
}

}) ();

Ce qu'il fait est relativement simple. Il essaie de saisir un script à partir du site Evernote et ajoute une date à la demande afin qu'elle tire toujours une nouvelle copie. Si cela réussit, un tas de JavaScript est ajouté à la page qui construit un iframe à partir de laquelle toutes les fonctionnalités est exposée et Evernote l'iframe peut alors utiliser les cookies standards, etc. pour vous assurer que vous êtes connecté et ensuite traiter votre demande .

Le bloc catch est juste au cas où le chargement de script dynamique échoue, où parce que vous êtes redirigé vers le site si Evernote (je devine) qu'il peut couper le contenu à partir de là.

Pour répondre à la question précise de la façon dont vous êtes toujours connecté, vous êtes toujours connecté parce que votre navigateur a maintenant les cookies de session pour le site Evernote (www.evernote.com), alors quand l'iframe ouvre sur la deuxième site, ces cookies vont avec et reconnaît que Evernote vous êtes connecté. l'utilisation des cookies est à peu près la norme pour les sessions sur le web, de sorte qu'ils ne font rien de spécial ici et je suis sûr que vous pouvez effectuer une recherche SO les questions de sécurité entourant les sessions basées sur les cookies.

Le point principal est l'iframe est essentiellement comme avoir une fenêtre séparée ouverte, sauf qu'il permet des données limitées à passer par la page de base au iframe il savoir ce que le site web que vous êtes.

L'espoir qui aide.

Autres conseils

Ils utilisent probablement les cookies. Elles sont le plus ouverts probablement créer un iframe, avec JavaScript, une page php sur leur site, le site cherche un cookie de connexion, si elle est là, le site tire les informations de l'utilisateur et fait son travail.

Faites juste attention, vous avez besoin d'un moyen de vérifier que le cookie n'a pas été créé par l'utilisateur pour duper le site. Je stocker une chaîne aléatoire dans un cookie, et aussi dans la base de données (dans le tableau utilisateur). Créez la chaîne aléatoire à chaque fois que l'utilisateur se connecte. Lorsque l'utilisateur tente d'utiliser le bookmarklet, comparer les deux chaînes, et seulement permettre l'accès si elles sont égales, si elles ne sont pas, supprimer les cookies, et demander à l'utilisateur de se connecter. . Ceci assure un attaquant ne peut pas simplement faire un cookie avec l'ID de l'utilisateur et de prendre sur leur compte (l'attaquant aurait besoin de la chaîne aléatoire, généré à chaque connexion, ce qui serait difficile à obtenir) .. En outre, définissez les cookies pour supprimer lors de la session du navigateur est terminée ..

Espère qui a contribué, Max

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top