# CSP-Bypass Cross Site Scripting

Un mecanismo de seguridad del navegador que tiene como objetivo mitigar XSS y algunos otros ataques. Funciona restringiendo los recursos (como scripts e imágenes) que una página puede cargar y restringiendo si una página puede estar enmarcada por otras páginas.

Para habilitar CSP, una respuesta debe incluir un encabezado de respuesta HTTP llamado `Content-Security-Policy`con un valor que contenga la política. Mientras que bypass de CSP se refiere a técnicas que los atacantes pueden utilizar para evadir las restricciones de CSP.

## ¿Cuál es el significado de los atributos?

* `default-src`: este es el recurso alternativo cuando no se han definido otros atributos. La mayoría de las veces este atributo tiene el valor `self`que indica que solo se pueden cargar recursos del propio sitio web.
* `script-src`: restringe las ubicaciones desde las que se pueden cargar scripts externos. El valor se puede establecer en `none`si el sitio web o la aplicación no utiliza scripts del lado del cliente.
* `img-src`: restringe las ubicaciones desde las que se pueden cargar las imágenes.
* `media-src`: restringe las ubicaciones desde las que se pueden cargar medios (como vídeos).
* `object-src`: restringe las ubicaciones desde las que se pueden cargar los complementos.
* `manifest-src:`restringe las ubicaciones desde las que se puede cargar el manifiesto de la aplicación.
* `frame-ancestors`: este atributo restringe las ubicaciones que pueden cargar el sitio web utilizando `frame`, `iframe`, o elementos. En su momento debería sustituirse el encabezado de respuesta HTTP .`objectembedappletframe-ancestorsX-Frame-Options`
* `form-action`: restringe las URL que se pueden utilizar como parte de una `<form>`acción. En otras palabras, la acción del formulario restringe dónde el navegador puede enviar los datos de los formularios completados. *Es importante tener en cuenta que form-action no recurre al default-src, así que asegúrese de definirlo si su sitio web o aplicación utiliza elementos de formulario.*
* `Plugin-types`: restringe el conjunto de complementos que se pueden incluir.
* `Base-uri`: Restringe las URL permitidas en el `src`atributo de una  `base`etiqueta.

### **Sitios de validacion:**

{% embed url="<https://csp-evaluator.withgoogle.com/>" %}

{% embed url="<https://cspvalidator.org/#url=https://cspvalidator.org/>" %}

<mark style="color:red;">**Recursos**</mark>

{% embed url="<https://www.cobalt.io/blog/csp-and-bypasses>" %}

{% embed url="<https://aszx87410.github.io/beyond-xss/en/ch2/csp-bypass/>" %}

{% embed url="<https://book.hacktricks.xyz/pentesting-web/content-security-policy-csp-bypass>" %}

{% embed url="<https://cheatsheetseries.owasp.org/cheatsheets/Content_Security_Policy_Cheat_Sheet.html>" %}

{% embed url="<https://portswigger.net/web-security/cross-site-scripting/content-security-policy>" %}

{% embed url="<https://bhavesh-thakur.medium.com/content-security-policy-csp-bypass-techniques-e3fa475bfe5d>" %}

{% embed url="<https://portswigger.net/web-security/cross-site-scripting/content-security-policy/lab-csp-bypass>" %}
