Mientras investigaba el problema de JSON vs XML, me encontré con this question. Ahora, una de las razones para preferir JSON se mencionó como la facilidad de conversión en Javascript, es decir, con el eval()
. Ahora esto inmediatamente me pareció potencialmente problemático desde una perspectiva de seguridad.¿Mejores prácticas de seguridad de JSON?
Así que comencé a investigar sobre los aspectos de seguridad de JSON y en esta publicación de blog sobre cómo JSON is not as safe as people think it is. Esta parte pegada a cabo:
Actualización: Si usted está haciendo JSON 100% correctamente, entonces usted sólo tiene objetos en el nivel superior. Arrays, Strings, Numbers, etc. serán todos envueltos. Un objeto JSON fallará a eval() porque el intérprete de JavaScript pensará que está mirando a un bloque en lugar de un objeto. Este ayuda en gran medida a proteger contra estos ataques, sin embargo, sigue siendo el mejor para proteger sus datos de seguridad con URL no predecibles.
Bien, esa es una buena regla para empezar: los objetos JSON en el nivel superior siempre deben ser objetos y nunca matrices, números o cadenas. Suena como una buena regla para mí.
¿Hay algo más que hacer o evitar cuando se trata de la seguridad relacionada con JSON y AJAX?
La última parte de la cita anterior menciona URL impredecibles. ¿Alguien tiene más información sobre esto, especialmente cómo lo haces en PHP? Tengo mucha más experiencia en Java que en PHP y en Java es fácil (en el sentido de que puedes mapear toda una gama de URL a un solo servlet), mientras que todos los PHP que he hecho han mapeado una sola URL para el script PHP.
Además, ¿cómo utilizas las URL impredecibles para aumentar la seguridad?
¡No consigo esto en absoluto! Seguramente cualquier solicitud hecha por el navegador (a cualquier URL - impredecible o no) puede ser reportada al usuario, ya sea usando una consola o algún script de GM ... – James
"JSON no es tan seguro como la gente piensa que es" está muerto – inf