2011-12-21 10 views
11

Recientemente he leído algunos artículos sobre 'secuestro de JSON', y algunos de ellos son here.¿Es posible hacer 'secuestro de JSON' en un navegador moderno?

Así que intenté hacer lo siguiente en mis navegadores, Chrome 17 (dev), Firefox 8 e IE8.

  • objeto de anulación o constructor Array
  • Modificar método __defineSetter__
  • modificar método defineProperty

pero no podía hacer nada con los datos (literal) JSON.

¿Se solucionó el problema de 'JSON hijacking' en el navegador moderno? ¿O cómo puedo reproducirlo?

+0

+1 Gran pregunta. FWIW, no pude hacer que 'Object.defineProperty()' o la anulación de 'Array' funcionara en Chrome 16. – Matt

+0

Lea esto http://stackoverflow.com/questions/2669690/why-does-google-prepend- while1-to-their-json-responses – techouse

Respuesta

1

No se trata de la aplicación legítima analizar el secuestro de json - json es un problema de divulgación de información sobre alguna parte malintencionada solicitando sus datos json en lugar de la aplicación real mientras el usuario inicia sesión en la aplicación que utiliza la API normalmente. La autenticación simple no ayuda, ya que el navegador envía la información de autenticación, p. auth-cookie gratis: - /.

Pero con ES5 el navegador más actual no se verá afectado más directamente por este problema. ¡Sin embargo, en las reglas de defensa a fondo! Y mi protección contra futuros problemas o regresiones, etc.

0

Algo como eso podría en teoría ser abusado si usa eval para decodificar JSON.

Las bibliotecas JS populares que proporcionan la funcionalidad de decodificación JSON tendrán el valor predeterminado JSON.parse cuando el navegador tenga soporte JSON incorporado, por lo tanto, cualquier navegador reciente no debería ser vulnerable a menos que su código esté incorrectamente escrito.

+0

La decodificación no es realmente relevante ya que un dominio remoto no pudo leer la respuesta de todos modos debido a la [Política de Same Origin] (http://en.wikipedia.org/wiki/Same-origin_policy) . – SilverlightFox

+1

El punto es que la Política de mismo origen no se aplica a las etiquetas de script. –

Cuestiones relacionadas