2011-02-23 7 views
5

Dado que es fácil de usar JSONP en una etiqueta de script para obtener los datos de un dominio diferente, ¿no deberíamos permitir que XMLHttpRequest para hacerlo así? No tiene mucho sentido afirmar que fortalece la seguridad cuando es posible evitarla, aunque con una semántica más desordenada.¿Por qué prohibir cross-domain ajax cuando funcionan las etiquetas de script?

+0

Es necesario leer acerca de la política del mismo origen, recomiendo el manual de seguridad del navegador Google. – rook

Respuesta

8

JSONP sólo funciona si el proveedor lo permite.

Si a través de dominios AJAX trabajó, uno de los primeros problemas que habría personas que desean publicar a otros dominios con la esperanza de que usted tiene una cuenta autenticada allí. Esto es CSRF.

que podían obtener una página autenticado como usted, lleve a su manera, y luego publicar algo malicioso con el token (que indica a la aplicación se trata de una solicitud interna).

+2

Estoy realmente sorprendido de cuántos desarrolladores no están al tanto de CSRF. – corrodedmonkee

+0

Buen punto. Sin embargo, parece que mejorar XMLHttpRequest sería una mejor solución que los scripts de script. ¿Por qué no darle su propio entorno de cookies? – henle

+0

@henle Usted * podría * autenticarse mediante IP o GET params. – alex

3

En realidad, JSOP es una solución inteligente para las limitaciones de la misma política de origen pero básicamente es un ataque autoinflingido de scripting (recuerde que JSONP warks utilizando etiquetas de script en lugar de XHR le da control total sobre toda su página a su proveedor de datos JSONP; por lo general, no son malvados, pero a veces son incompetentes, así que tenlo en cuenta).

Hay muchas discusiones sobre cómo arreglar la misma política de origen en las nuevas versiones de ECMAScript porque claramente no funciona si se tiene que eludir para hacer cualquier tipo de mashups. Una idea interesante en mi opinión es tener una versión más barata de XHR que no envíe cookies o encabezados inútiles y pueda evitar ataques de falsificación de solicitudes entre sitios, pero aún permitiendo mezclas seguras sin dar acceso total al proveedor de datos a su página. Pero aún tenemos que esperarlo.

+0

Correcto, no permitir (o sandbox) las cookies y los encabezados que se pueden abusar en las solicitudes a dominios extranjeros. Realmente no suena tan difícil de arreglar. XHR no está definido por ECMAScript, está definido por W3C. – henle

Cuestiones relacionadas