sobre resueltos programacion llamar llamada insertar ejemplos desde debe código colocarse codigo caracteristicas javascript code-injection

resueltos - programacion javascript



Se negó a ejecutar un script de JavaScript. Código fuente de script encontrado en la solicitud (5)

Como han dicho otros, esto sucede cuando una respuesta HTTP contiene una cadena de JavaScript y / o HTML que también estaba en la solicitud. Esto generalmente se produce al ingresar JS o HTML en un campo de formulario, pero también se puede activar de otras maneras, como ajustar manualmente los parámetros de la URL.

El problema con esto es que alguien con malas intenciones puede poner el JS que desee como valor, vincularlo a esa URL con el valor JS malicioso y causar problemas a los usuarios.

En casi todos los casos, esto puede solucionarse mediante codificación HTML de la respuesta , aunque hay excepciones. Por ejemplo, esto no será seguro para el contenido dentro de una etiqueta <script> . Otros casos específicos se pueden manejar de manera diferente; por ejemplo, inyectar información en una URL es mejor atendido por la codificación URL.

Como mencionó Kendall Hopkins, puede haber algunos casos en los que realmente desee que se ejecute JavaScript desde las entradas de formularios, como crear una aplicación como JSFiddle . En esos casos, te recomiendo que al menos revises la entrada de tu código backend antes de volver a escribirla ciegamente. Después de eso, puedes utilizar el método que mencionó para evitar el bloqueo de XSS (al menos en Chrome), pero ten en cuenta que te está abriendo a los atacantes.

En WebKit obtengo el siguiente error en mi JavaScript:

Se negó a ejecutar un script de JavaScript. El código fuente del script encontrado dentro de la solicitud.

El código es para un girador de JavaScript, ver ASCII Art .

El código solía funcionar bien y todavía funciona correctamente en Camino y Firefox. El error solo parece ser arrojado cuando la página se guarda a través de un POST y luego se recupera a través de un GET. Sucede tanto en Chrome / Mac como en Safari / Mac.

¿Alguien sabe lo que esto significa y cómo solucionarlo?


Es una medida de seguridad para evitar ataques XSS (scripts entre sitios) .

Esto sucede cuando se envía un código JavaScript al servidor a través de una solicitud HTTP POST, y el mismo código regresa a través de la respuesta HTTP. Si Chrome detecta esta situación, se niega la ejecución del script y aparece el mensaje de error Refused to execute a JavaScript script. Source code of script found within request Refused to execute a JavaScript script. Source code of script found within request .

También vea este blog sobre Seguridad en profundidad: Nuevas características de seguridad .


Esta "característica" se puede desactivar enviando el encabezado HTTP no estándar X-XSS-Protection en la página afectada.

X-XSS-Protection: 0


Usé este truco hacky de PHP justo después de comprometerme con la base de datos, pero antes de que el script se haya renderizado desde mi solicitud _GET :

if(!empty($_POST[''contains_script''])) { echo "<script>document.location=''template.php'';</script>"; }

Esta fue la solución más barata para mí.


Respuesta breve : actualice la página después de realizar su presentación inicial del javascript o acceda a la URL que mostrará la página que está editando.

Respuesta larga : debido a que el texto que completó en el formulario incluye javascript, y el navegador no necesariamente sabe que usted es el origen del javascript, es más seguro para el navegador suponer que usted no es el origen de este JS, y no ejecutarlo.

Un ejemplo : supongamos que le di un enlace a su correo electrónico o facebook con algunos javascript en él. E imagina que el javascript enviaría un mensaje a todos tus amigos con mi genial enlace. Por lo tanto, el juego de hacer que se invoque ese enlace se convierte simplemente en encontrar un lugar para enviar el javascript de modo que se incluya en la página.

Chrome y otros navegadores WebKit intentan mitigar este riesgo al no ejecutar ningún javascript que esté en la respuesta, si estaba presente en la solicitud. Mi nefasto ataque se vería frustrado porque tu navegador nunca ejecutaría ese JS.

En tu caso, lo estás enviando a un campo de formulario. La publicación del campo de formulario generará una imagen de la página que mostrará el código JavaScript, lo que hará que el navegador se preocupe. Sin embargo, si su javascript está verdaderamente guardado, al presionar esa misma página sin enviar el formulario, podrá ejecutarlo.