¿Cómo escapar de la entrada del usuario en un valor de objeto javascript?

0

¿Cómo escapar correctamente de la entrada controlada por el usuario cuando se inserta como un valor en el objeto JSON?

<script>
  $(document).ready(function() {
    new MyObject({
      key1: "user_input",
      key2: ["user_input1", "user_input2"]
    });
  });
</script>
    
pregunta Andrei Botalov 01.11.2012 - 17:41
fuente

1 respuesta

1

enlace toma contenido similar a JSON y lo convierte a JSON que es seguro evaluar como código fuente de JavaScript y que se puede incrustar en los elementos HTML <script> y en las secciones XML <![CDATA[...]]> .

Por ejemplo, dado

{
  key1: "user_input",
  key2: ["user_input1", "user_input2"]
}

Conserva varias propiedades:

  1. Las claves deben estar correctamente citadas.
  2. coincidencias de corchetes.
  3. Todos los caracteres de nueva línea de JavaScript (CR, LF, U + 2028, U + 2029) en cadenas tienen \u.... de escape.
  4. Las comillas ( " ), las barras diagonales inversas ( \ ) son \u.... de escape para garantizar que las cadenas no terminen prematuramente.
  5. Los paréntesis angulares ( < y > ) se escapan \u.... según sea necesario para evitar que las cadenas contengan el texto literal </script o ]]> , lo que evitaría la incrustación.
  6. Todos los caracteres de control (en realidad, los caracteres no permitidos en XML) son \u.... escapado incluyendo U + 0-U + 1F excluyendo la pestaña, U + 7F, U + FFFE, U + FFFF.
  7. Los sustitutos huérfanos de UTF-16 son \u.... escaped.
  8. Todas las secuencias de escape se convierten en secuencias de escape JSON válidas, que incluyen escapes octales ( 2 ), escapes hexadecimales de dos dígitos ( \x0A ) y escapes de un solo carácter ( \! ).

Puede ser una buena idea que \u.... escape cosas como + para desfigurar UTF-7.

    
respondido por el Mike Samuel 01.11.2012 - 18:08
fuente

Lea otras preguntas en las etiquetas