Proteja su sitio web del ataque de click-jacking implementando el encabezado CSP (Política de seguridad de contenido)
CSP es uno de los 10 principales encabezados seguros de OWASP y, a menudo, lo recomiendan los expertos en seguridad o las herramientas para implementarlo. Hay muchas opciones para crear la política para hacer cumplir la forma en que desea exponer sus recursos web.
Una de las directivas llamadas frame-ancestors
que se introdujeron en la versión 2 de CSP ofrece más flexibilidad en comparación con el Encabezado X-Frame-Options. frame-ancestors
funciona de la misma manera que X-Frame-Options para permitir o no permitir que los recursos se incrusten usando iframe, frame, object, incrustado y elemento de applet.
Creo que X-Frame-Options quedará obsoleto en un futuro próximo cuando CSP sea totalmente compatible con los principales navegadores. Mientras escribo Antepasados de tramas de CSP funciona con todas las últimas versiones de navegadores excepto IE.
No sé cuándo Microsoft permitirá el soporte en IE. Siempre puede comprobar la compatibilidad del navegador en ¿Puedo usar el sitio?.
Echemos un vistazo al siguiente procedimiento de implementación.
Apache HTTP
mod_headers
es el requisito previo para inyectar encabezados en Apache. Dependiendo del sistema operativo y la versión, pero si está utilizando Ubuntu y Apache 2.4 entonces puedes usar a2enmod headers
para que pueda.
root@geekflare:/etc/apache2# a2enmod headers
Enabling module headers.
To activate the new configuration, you need to run:
systemctl restart apache2
root@geekflare:/etc/apache2# systemctl restart apache2
root@geekflare:/etc/apache2#
Nota:: toda la configuración que puede hacer en httpd.conf
archivo o cualquier archivo de configuración efectivo que esté utilizando.
Negar todo
Similar a X-Frame-Options DENY. Si no desea que ningún sitio (incluido el propio) se incruste, agregue lo siguiente.
Header set Content-Security-Policy "frame-ancestors 'none';"
Guarde el archivo y reinicie Apache HTTP para que surta efecto.
Intenté incrustar el sitio y, como puede ver, se estaba bloqueando.
Permitir de uno mismo pero NEGAR a los demás
Similar a X-Frame-Options SAMEORIGIN, puede agregar lo siguiente.
Header set Content-Security-Policy "frame-ancestors 'self';"
Permitir desde dominios propios y múltiples
X-Frame-Options no tenía una opción para permitir desde múltiples dominios. Gracias a CSP, puede hacer lo siguiente.
Header set Content-Security-Policy "frame-ancestors 'self' 'geekflare.com' 'gf.dev' 'geekflare.dev';"
Lo anterior permitirá que el contenido se incruste desde self, geekflare.com, gf.dev, geekflare.dev. Cambie estos dominios por los suyos.
Nginx
El concepto y la directiva son los mismos que se explicaron anteriormente en la sección Apache HTTP, excepto por la forma en que agrega el encabezado. Los encabezados en Nginx deben agregarse debajo del server
bloque en un archivo de configuración correspondiente.
Negar todo
add_header Content-Security-Policy "frame-ancestors 'none';";
NEGAR todo pero no a uno mismo
add_header Content-Security-Policy "frame-ancestors 'self';";
Permitir desde múltiples dominios
add_header Content-Security-Policy "frame-ancestors 'yoursite.com' 'example.com';";
El ejemplo anterior permitirá incrustar contenido en yoursite.com y example.come. Después de realizar cambios, no olvide reiniciar el servidor Nginx para probar la política.
WordPress
Depende de cómo esté alojando WordPress.
Si se aloja usted mismo como una nube o un VPS, es posible que esté utilizando un servidor web como Apache o Nginx. Si es así, puede seguir lo mencionado anteriormente para implementar en el servidor web en lugar de WordPress. Sin embargo, si en alojamiento compartido o sin acceso para modificar servidores web, puede aprovechar un complemento.
Para implementar CSP en WordPress, puede utilizar el Complemento Content Security Policy Pro.
Verificación
Una vez que haya terminado con la implementación, puede utilizar las herramientas de desarrollo integradas en el navegador o un herramienta de prueba de encabezados seguros.
Conclusión
CSP es uno de los poderosos encabezados seguros para prevenir vulnerabilidades web. Espero que las instrucciones anteriores lo guíen sobre cómo implementar los ancestros de marcos en Apache y Nginx.