2011-11-04 15 views
19

He estado trabajando en una biblioteca JS y me gustaría configurar una página de demostración en Github que permita, por ejemplo, que los usuarios definan sus propias devoluciones de llamada y ejecuten comandos.¿Cómo permite jsFiddle y ejecuta JavaScript definido por el usuario sin ser peligroso?

Sé que "eval() es malo" y puedo ver qué tan ciego eval() de scripts podría llevar a XSS y otros problemas de seguridad. Estoy tratando de cocinar algunos esquemas alternativos.

Realmente disfruto de la interactividad de jsFiddle. He echado un vistazo a su fuente, pero esperaba que alguien pudiera explicar cómo jsFiddle permite y ejecuta el JavaScript definido por el usuario sin ser peligroso. Siempre que no involucre un servidor de eco de terceros, espero poder emular el enfoque.

Respuesta

24

jsFiddle ejecuta scripts de usuario en un dominio diferente, http://fiddle.jshell.net (try it and see).
Por lo tanto, no puede interactuar con el marco principal y no puede robar las cookies.

En realidad, puede hacer esto sin un servidor por separado al colocar una página estática en un dominio separado que lee de su cadena de consulta en Javascript.
Puedes comunicarte utilizando el título de la página (y también el enemigo).

+0

¿Qué significa ejecutar en un dominio separado - cargue un iFrame que contenga una página que ejecute JavaScript? – buley

+0

@editor: Exactamente. La página en el '