Pregunta

ok, empiezo con un método muy simple:

alert(someText);

" someText " es una variable, a la que los usuarios pasarán un valor mediante un formulario. ¿Existe la posibilidad de que el usuario pase el siguiente texto e inyecte algún código en mi Javascript? Por ejemplo, ¿puede el usuario pasar esto en este método:

  

" otro texto "); alert (" the nextText "

Si es así, ¿cómo puedo evitar que suceda? si no, ¿alguien puede mencionar alguna preocupación de seguridad acerca de javascript?

¿Fue útil?

Solución

No, no funciona de esa manera. Los valores de cadena no se sustituyen donde se usan, solo se usan como cadenas. Entonces no hay problema de seguridad.

La única vez que deba preocuparse por esto es cuando usa eval :

eval("alert(\" + someText + "\");");

(Sí, me doy cuenta de que este es un ejemplo artificial ...)

Otros consejos

Básicamente, siempre que no estés llamando a "eval" (o alguna función que lo haga), y no está inyectando Javascript creado a partir de usuarios directamente en las páginas (a través de la etiqueta del script), no debería tener nada de qué preocuparse.

Una vez que tenga una variable dentro de javascript, no importará mucho a menos que haga una evaluación o establezca la propiedad innerHTML de un elemento DOM con ella.

Aparte de eso, si existe un potencial de inyección depende de cómo se obtiene el valor del formulario para el JavaScript.

Si, por ejemplo, el formulario se envía al servidor y el valor de la variable se establece escribiendo javascript en el lado del servidor, podría tener un problema. Algo como esto obviamente dejaría el script abierto para inyección.

var someText = "<?php echo 

Una vez que tenga una variable dentro de javascript, no importará mucho a menos que haga una evaluación o establezca la propiedad innerHTML de un elemento DOM con ella.

Aparte de eso, si existe un potencial de inyección depende de cómo se obtiene el valor del formulario para el JavaScript.

Si, por ejemplo, el formulario se envía al servidor y el valor de la variable se establece escribiendo javascript en el lado del servidor, podría tener un problema. Algo como esto obviamente dejaría el script abierto para inyección.

<*>

Por lo tanto, es difícil decir si podría tener un problema de seguridad sin saber cómo está obteniendo el valor del formulario. En mi experiencia, el código del lado del servidor es la causa de la mayoría de los vectores XSS. En términos de JavaScript, generalmente solo tiene que estar atento a eval e innerHTML.

POST["someText"]; ?>";

Por lo tanto, es difícil decir si podría tener un problema de seguridad sin saber cómo está obteniendo el valor del formulario. En mi experiencia, el código del lado del servidor es la causa de la mayoría de los vectores XSS. En términos de JavaScript, generalmente solo tiene que estar atento a eval e innerHTML.

if " someText " es procesado por el servidor, ejemplo JSP ? velocidad , entonces es peligroso

por ejemplo

<script>
  alert({{someText}})
</script>

luego, antes del tiempo de ejecución de JavaScript, mientras que el análisis HTML, es peligroso

pero si "sometext" es una variable de JavaScript, la respuesta de @ Zifre es correcta;

al lado, excepto " eval " palabra clave, nueva función (algún texto) ? location.href = algún texto ...... puede invocar algunos ataques

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top