Pregunta

Me he encontrado bookmarklet Evernote y se preguntaba cómo funcionaba.

Sólo puede arrastrar a su marcador e ir a cualquier página web, haga clic en ese bookmarklet y primero le pregunte al inicio de sesión en. Todo esto lo han hecho ya y saber cómo funciona.

El bit que no entiendo es que al iniciar la sesión en que se autentican y le permiten presentar las cosas (en este caso, un sitio url etc). Cuando haya terminado el bookmarklet que colocó una pequeña superposición en la página que está viendo desaparece.

  

Cuando vas a una nueva pestaña y utilizar el   bookmarklet nuevo que aún está conectado   ¡en! ¿Cómo?

puedo ver que están utilizando un iFrame cuando sus cargas bookmarklet la superposición sobre la página - pero es lo que establecen las galletas o algo? Si es así, ¿es seguro? Cualquier persona puede cambiar los valores? O ¿están utilizando algún tipo de sistema de clave privada / pública

Por cierto, me gustaría replicar este bookmarklet usando PHP / Javascript (jQuery tal vez). Le agradecería si alguien puede ayudar a entender cómo lo hacen o que me señale tutoriales relevantes.

Gracias a todos por la ayuda.

¿Fue útil?

Solución

Para empezar, aquí está el código se ejecuta el bookmarklet:

(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);
}

}) ();

Lo que hace es relativamente simple. Se trata de agarrar una secuencia de comandos desde el sitio Evernote y añade una marca de tiempo a la solicitud para que siempre tira de una nueva copia. Si que tiene éxito, se añade un montón de JavaScript para la página que construye un marco flotante de la cual toda la funcionalidad de Evernote está expuesto y el iframe a continuación, puede hacer servir las galletas, etc. estándar para asegurarse de que está conectado y luego procesar su solicitud .

El bloque catch es si acaso la carga dinámica de la escritura falla, en la que causa que está redireccionado al sitio de modo Evernote (supongo) que puede recortar el contenido de allí.

Para responder a la pregunta específica de cómo usted todavía está en el sistema, que todavía está conectado debido a que su navegador tiene ahora las cookies de sesión para el sitio Evernote (www.evernote.com), por lo que cuando el iframe se abre en el segundo sitio, esas galletas van con él y Evernote reconoce que está conectado. el uso de las cookies es más o menos el estándar para las sesiones en la web, por lo que no están haciendo nada especial aquí y estoy seguro que usted puede buscar para SO las cuestiones de seguridad que rodean las sesiones basadas en cookies.

El punto principal es el iframe es esencialmente como tener una ventana separada abierta, salvo que permite algunos datos limitados para ser aprobadas por la página base para el iframe por lo que sabe lo que el sitio web que se encuentra.

Espero que ayude.

Otros consejos

Ellos son probablemente el uso de cookies. Lo más probable es abrir un iframe, con JavaScript, PHP a una página en su sitio, a continuación, las miradas de sitio para una cookie de inicio de sesión, si está allí, el sitio tira de la información del usuario y hace su cosa.

Sólo tenga cuidado, se necesita una forma de verificar que la cookie no fue creado por el usuario para engañar al sitio. Me almacenar una cadena aleatoria en una cookie, y también en la base de datos (en la tabla de usuario). Crear la cadena aleatoria cada vez que el usuario inicia sesión. Cuando los intentos de usuario para utilizar el bookmarklet, comparar las dos cadenas, y sólo permitir el acceso si son iguales, si no es así, eliminar las cookies, y pedir al usuario de inicio de sesión. . Esto se asegura de que un atacante puede no sólo hacer una galleta con el ID de usuario y hacerse cargo de su cuenta (el atacante necesitaría la cadena aleatoria, generada cada inicio de sesión, lo que sería difícil de obtener) .. Además, establecer las cookies para eliminar cuando se termina la sesión del navegador ..

espera que ayudó, Max

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top