only div añadir html css jenkins content-security-policy

div - tooltip input html



Política de seguridad de contenido de Jenkins (4)

Al experimentar, recomiendo usar la Consola de scripts para ajustar el parámetro CSP dinámicamente como se describe en la página Configuración de la Política de seguridad del contenido . (Hay otra nota en la página de wiki de Jenkins que indica que es posible que deba forzar la recarga de la página para ver la nueva configuración).

Para poder usar tanto los estilos en línea como las hojas de estilo locales, debe agregarse tanto en sí mismo como inseguro en línea :

System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "default-src ''self''; style-src ''self'' ''unsafe-inline'';")

Dependiendo de cómo se manipule la barra de progreso, es posible que también deba ajustar ''script-src'' de la misma manera.

Una vez que encuentre una configuración que funcione, puede ajustar la secuencia de comandos de inicio de Jenkins para agregar la definición del parámetro CSP.

Estoy confundido acerca de la Política de Seguridad de Contenido de Jenkins.

Conozco estos sitios:

Tengo una página html que se muestra a través de Jenkins Clover Plugin. Esta página html usa estilo en línea, por ejemplo:

<div class=''greenbar'' style=''width:58px''>

El elemento div visualiza una barra de progreso. El uso de la configuración predeterminada de Jenkins CSP conduce al siguiente resultado: Progressbar_FAIL

El resultado que quiero tener se ve así: Progressbar_WORKS

Intenté relajar las reglas de CSP, agregando diferentes combinaciones de parámetros (script-src, style-src) con diferentes niveles (auto, unsafe-inline, ..) pero nada funciona.

Así que mis preguntas por ahora:

  1. ¿Dónde tengo que especificar la configuración de CSP?
  2. ¿Es posible utilizar estilos en línea?
  3. ¿Dónde deberían ubicarse los estilos? Mis hojas de estilo css están ubicadas localmente en el servidor Jenkins.
  4. ¿Cuál es la mejor manera de "satisfacer" las reglas CSP y el estilo en línea?

Actualizar

1. Pruebe: -Dhudson.model.DirectoryBrowserSupport.CSP="default-src ''self'' en el archivo jenkins.xml. Luego se produce el siguiente error:

Se negó a aplicar el estilo en línea porque viola la siguiente directiva de Política de seguridad de contenido: "default-src ''self''". Se requiere la palabra clave ''unsafe-inline'', un hash (''sha256-'') o un nonce (''nonce -...'') para habilitar la ejecución en línea. Tenga en cuenta también que ''style-src'' no se configuró explícitamente, por lo que ''default-src'' se usa como una alternativa.

2. Pruebe -Dhudson.model.DirectoryBrowserSupport.CSP="default-src ''self''; style-src ''self'' en el archivo jenkins.xml. Luego se produce el siguiente error:

Se negó a aplicar el estilo en línea porque viola la siguiente directiva de Política de seguridad de contenido: "style-src ''self''". Se requiere la palabra clave ''unsafe-inline'', un hash (''sha256-'') o un nonce (''nonce -...'') para habilitar la ejecución en línea

Entiendo que este intento no puede resolver mi problema, porque default-src incluye style-src

3. Pruebe -Dhudson.model.DirectoryBrowserSupport.CSP="default-src ''self''; style-src ''unsafe-inline'' en el archivo jenkins.xml. Se produce el siguiente error:

Se negó a cargar la hoja de estilo s: //jenkins/andsomedir/stylesheet.css [su https: // ... no puede publicar más de dos enlaces :(] porque viola la siguiente directiva de Política de seguridad de contenido: "style-src ''unsafe-inline'' ".


Para agregar más a la respuesta de @Kirill ...

Si jenkins se implementa en el contenedor tomcat , configure el valor del entorno CATALINA_OPTS en el setenv.sh file (Presente en la carpeta ${CATALINA_BASE}/bin ) como se resalta a continuación:

export CATALINA_OPTS="-Xmx2048m -Xms2048m -XX:MaxNewSize=768m -XX:-HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${CATALINA_BASE}/logs/java.hprof -XX:ParallelGCThreads=2 -XX:-UseConcMarkSweepGC -Dcom.sun.management.jmxremote -Dhudson.model.DirectoryBrowserSupport.CSP=/"/"

o

export CATALINA_OPTS="-Xmx2048m -Xms2048m -XX:MaxNewSize=768m -XX:-HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/software/jenkins/tomcat_jenkins/logs/java.hprof -XX:ParallelGCThreads=2 -XX:-UseConcMarkSweepGC -Dcom.sun.management.jmxremote -Dhudson.model.DirectoryBrowserSupport.CSP=/"sandbox allow-scripts; default-src ''self''; script-src *; ''unsafe-eval''; img-src *; style-src *; ''unsafe-inline''; font-src *;/

Después de cambiar el archivo anterior, reinicie el tomcat . Funcionó como un encanto para mí. Espero eso ayude :)

Nota: - CSP solo es aplicable para los complementos como el editor HTML, el complemento de Maven. No funcionó para el archivo html de correo electrónico.


Solo para ser claros acerca de establecer esta propiedad CSP permanentemente en Jenkins.

Si está ejecutando Jenkins en Ubuntu :

  1. $ vim /etc/default/jenkins
  2. Encuentre la línea con JAVA_ARGS y agregue la política de CSP de esta manera: JAVA_ARGS="-Djava.awt.headless=true -Dhudson.model.DirectoryBrowserSupport.CSP=/"default-src ''self'' ''unsafe-inline'' ''unsafe-eval''; img-src data:;/"" JAVA_ARGS="-Djava.awt.headless=true -Dhudson.model.DirectoryBrowserSupport.CSP=/"default-src ''self'' ''unsafe-inline'' ''unsafe-eval''; img-src data:;/""

Si está ejecutando Jenkins en CentOS :

  1. $ vim /etc/sysconfig/jenkins
  2. Busque la línea con JENKINS_JAVA_OPTIONS y agregue la política de CSP de esta manera: JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true -Dhudson.model.DirectoryBrowserSupport.CSP=/"default-src ''self'' ''unsafe-inline'' ''unsafe-eval''; img-src data:;/"" JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true -Dhudson.model.DirectoryBrowserSupport.CSP=/"default-src ''self'' ''unsafe-inline'' ''unsafe-eval''; img-src data:;/""

Guarde el archivo y reinicie Jenkins. $ sudo service jenkins restart o en su navegador http://localhost:8080/safeRestart


Tratando de compartir mis procedimientos, siempre sigo una de estas soluciones. Sin embargo, debe prestar atención a sus restricciones de seguridad, ya que la aplicación de estas correcciones podría ser insegura.

  1. Arreglo temporal:

Vaya a la consola de Jenkins y aplique los siguientes comandos según el tipo de relajación de políticas CSP que desee.

System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "sandbox allow-scripts; default-src ''self''; style-src ''self'' ''unsafe-inline''; script-src * ''unsafe-inline'';")

Esta solución está dirigida a pruebas temporales o entorno de desarrollo.

Si desea cambiarlo permanentemente, agregue esto al comando java cuando ejecute la aplicación:

-Dhudson.model.DirectoryBrowserSupport.CSP="sandbox allow-scripts; default-src ''self''; style-src ''self'' ''unsafe-inline'';"

Finalmente te sugiero que leas estos artículos:

Documentación oficial de Jenkins https://wiki.jenkins.io/display/JENKINS/Configuring+Content+Security+Policy

Soluciones para restablecer las reglas de CSP de forma temporal o permanente: https://www.cyotek.com/blog/adjusting-the-jenkins-content-security-policy