Pregunta: "D3 (js) le permite enlazar datos arbitrarios a un DOM"

0

Tengo una pregunta relacionada con la seguridad con respecto a d3.js

D3.js esencialmente permite que los datos conduzcan gráficos dinámicos, etc., entre otras características.

Las menciones de la página de destino "d3js.org" "D3 (js) le permiten enlazar datos arbitrarios a un DOM".

Las funciones como d3.csv.parse se pueden usar para leer datos "arbitrarios". Sin embargo, la tabla en cuestión estaría esperando ciertos tipos de datos, etc.

¿Puede tal biblioteca realmente aceptar datos "arbitrarios" de usuarios anónimos? ¿Podría un usuario potencialmente analizar datos cuidadosamente elaborados para producir un resultado inesperado con D3? (es decir, ejecución JS autorizada).

¿Cuál puede ser la mejor práctica aquí para querer analizar arbitrariamente a D3?

    
pregunta STM 06.10.2015 - 03:10
fuente

2 respuestas

1

EDITAR: No puedo comentar sobre la pregunta ya que me quedé bloqueado de mi cuenta anterior y no tengo suficiente reputación ... Todo lo que sigue se aplica a los datos también. Nada en el lado del cliente está bajo su control. Estoy confundido en cuanto a por qué no estaría preocupado por el código arbitrario sino solo por los datos arbitrarios. En términos generales, la capacidad de modificar el código proporciona más poder para producir resultados "inesperados" que la capacidad de modificar los datos. Tal vez debería explicar exactamente lo que le preocupa. ¿Puede aclarar qué quiere decir con "ejecución JS autorizada"?

Si entiendo su pregunta, creo que está preguntando si un usuario puede cambiar su javascript del lado del cliente de manera arbitraria, es decir, para cambiarlo como lo desee. La respuesta es un sí rotundo. Echa un vistazo a Greasemonkey , por ejemplo. En general, todo lo que se está ejecutando en el cliente está bajo su control. Ha habido muchos intentos de crear sistemas del lado del cliente que eviten este tipo de cosas, pero en realidad solo funcionan si el cliente opta por usarlos. Cualquier usuario técnicamente sofisticado podrá deshabilitar estas opciones.

Usted nunca debe poner ningún tipo de lógica sensible en el lado del cliente. Todas las aportaciones provenientes del cliente deben considerarse mal formadas o manipuladas de otra manera por razones infames.

Hubo aproximadamente una década de casos en los que un sitio web minorista tomó el precio de un artículo como una entrada del POST del cliente. Un usuario vio esto y presentó un precio de $ 0.01 y ordenó un montón de artículos. El sitio web debidamente ejecutado el pedido tal como fue presentado. Fue a la corte y el caso se resolvió contra el sitio web. Es decir, ni siquiera era ilegal.

    
respondido por el JimmyJames 06.10.2015 - 18:44
fuente
0
  

¿Qué sucede si permite que los usuarios creen los datos que deseen?   a su vez se alimenta a la JS? Podría datos hechos de alguna manera causar el JS   ¿Código para generar resultados no deseados?

Todo esto se reduce a cuánto confía en la biblioteca. Es decir, confiando en que no está haciendo nada malicioso y confiando en que no hay errores explotables que permitan lo anterior.

Si está descargando el código fuente, puede inspeccionarlo para asegurarse de que tenga pocas posibilidades de ser el primero. Este último es más difícil de detectar, aunque es poco probable a menos que se use eval o algo similar en algún lugar (hay varias formas de ejecutar código arbitrario, incluso si no se usa eval ).

Si está enlazando a la biblioteca en su sitio usando <script src="... , confía en que no actualicen la biblioteca con una versión maliciosa o que su sitio no esté comprometido y que un atacante no reemplace la biblioteca una versión maliciosa.

En general, debe ser un riesgo bajo, especialmente si usted mismo hospeda la biblioteca y revisa el código antes de disminuir si es necesario.

    
respondido por el SilverlightFox 07.10.2015 - 19:26
fuente

Lea otras preguntas en las etiquetas