Mi objetivo es permitir a los socios que diseñen sus páginas de destino con su propio estilo al enviarnos un enlace a su hoja de estilo en un parámetro de URL. ¿Hay problemas de seguridad o compatibilidad del navegador al cargar CSS de terceros a través de JavaScript?¿Hay algún peligro al cargar CSS externo de terceros?
Respuesta
En archivos CSS.
expressions(code)
, behavior:url()
, url(javascript:code)
, y -moz-binding:url()
tienen posibles problemas de seguridad.
El comportamiento no puede ser de dominio cruzado, por lo que elimina algunas amenazas, pero en general, debe desinfectarlo de alguna manera.
Si permite que el usuario enlace a CSS en servidores externos, no hay una forma de validación a prueba completa. El servidor podría verificar el archivo CSS en el servidor para asegurarse de que no haya nada malicioso, pero ¿qué ocurre si el usuario cambia la hoja de estilo? Debería comprobar continuamente la hoja de estilo. Además, el servidor podría enviar información diferente a la dirección IP del servidor para intentar eludir el método de validación.
Sinceramente, le aconsejo que guarde el CSS en su propio servidor. Simple run it arroja un analizador de expresiones regulares que elimina el posible código malicioso desde arriba.
Mientras lo valide de alguna manera, debe ser bueno.
REGLA DE ORO: no confían en el usuario
Si el usuario es la única persona con la capacidad de ver su CSS personalizado, a continuación, en realidad no hay ningún peligro. Podrían arruinar su propia experiencia en su sitio, pero no la de los demás.
Sin embargo, si su CSS personalizado se muestra a otros usuarios, entonces podrían potencialmente utilizarlo para desordenar completamente los estilos de su sitio como lo desea. Por ejemplo, pueden simplemente tomar el id
de algunos elementos importantes de su fuente y anularlos para ocultarlos.
Por supuesto, siempre que tenga cuidado y desinfecte de forma adecuada todas las entradas de los usuarios, no debería enfrentar ningún problema importante.
Las expresiones CSS solo funcionan en IE 6-7, pero permiten el uso de JS en línea (generalmente para calcular un valor para establecer).
Por ejemplo: Sin embargo
/* set bgcolor based on time */
div.title {
background-color: expression((new Date()).getHours() % 2 ? "#B8D4FF" : "#F08A00");
}
, esto podría ser utilizado para hacer cosas maliciosas, yo diría que es al menos un valor aproximado de la prueba.
Funciona en IE8 dependiendo del tipo de documento – William
- 1. ¿Hay algún peligro al dejar las declaraciones NSLog al crear una aplicación para su distribución?
- 2. ¿Hay algún peligro al usar campos de entrada fuera/sin formularios en páginas HTML/Javascript?
- 3. ¿Hay algún buen producto GUI de terceros para Python?
- 4. ¿Hay algún complemento que permita cargar/usar dependencias no Maven?
- 5. ¿Hay algún peligro para crear UUID en JavaScript del lado del cliente?
- 6. ¿Hay algún IE8 solo css hackeo?
- 7. Demora al cargar imágenes de fondo CSS
- 8. ¿Cargar archivo xml externo?
- 9. Cargar archivo externo al segmento AWS S3 con PHP SDK
- 10. interno vs externo CSS
- 11. CSS externo para JSF
- 12. ¿Hay algún beneficio al NO usar un CDN público para cargar bibliotecas de Javascript?
- 13. ¿Hay algún daño al restablecer el autoincremento?
- 14. ¿Hay algún evento onDocumentChange?
- 15. ¿Hay algún ancho completo que admita CSS Grid System?
- 16. ¿Hay algún complemento para que Visual Studio limpie CSS?
- 17. Problema al cargar archivos externos (CSS y JavaScript) en Safari
- 18. Cargar CSS al azar en la página de actualización
- 19. ¿Hay algún error en el renderizado de visibilidad CSS de Chrome?
- 20. Cómo cargar recursos del marco externo
- 21. ¿Hay algún combobox WPF Multiselect disponible?
- 22. ¿Hay un CSS no igual al selector?
- 23. ¿Hay una lista de bibliotecas de Python 3 de terceros?
- 24. ¿Hay una clase estándar de caché de Python de terceros?
- 25. Delphi - ¿Hay algún equivalente al bloqueo de C#?
- 26. ¿Puede JavaScript cargar datos XML desde un dominio de terceros?
- 27. ¿Hay algún Principio de Clojure?
- 28. ¿Hay un Directorio de componentes de terceros para FireMonkey?
- 29. ¿Hay algún Treebank gratis?
- 30. ¿Hay algún embellecedor CoffeeScript?
+1 ¡Para ejemplos específicos! –
+1, pero tenga en cuenta que ahora las expresiones no son compatibles, como lo es el comportamiento, y aunque usted * podría * cargar JS en una imagen de fondo o algo que no se va a ejecutar. –
Las expresiones se ejecutan en IE8 para compatibilidad con versiones anteriores. Considerando que IE tiene el uso más grande, definitivamente los consideraría una amenaza a la seguridad. – William