Opciones de marco X
X-Frame-Options
El encabezado de respuesta HTTP es una etiqueta que se utiliza para indicar al navegador si una página puede mostrarse en el navegador. Los sitios pueden evitar los ataques de secuestro de clics asegurándose de que el sitio no esté incrustado en el sitio de otra persona.
Esta seguridad adicional solo se proporciona si el usuario que accede al documento utiliza un navegador X-Frame-Options
compatible .
Nota: Content-Security-Policy
el encabezado de respuesta HTTP tiene una frame-ancestors
directiva y los navegadores que admiten esta directiva han dejado de usar X-Frame-Options
el encabezado de respuesta.
gramática
X-Frame-Options
Hay dos valores posibles:
X-Frame-Options: DENY
X-Frame-Options: SAMEORIGIN
guía
Si se establece en DENY
, no solo no se cargará cuando el marco de los sitios web de otras personas esté incrustado, sino que tampoco se cargará en páginas con el mismo nombre de dominio. Por otro lado, si se establece en SAMEORIGIN
, la página se puede anidar en el marco de la página del mismo nombre de dominio.
-
DENY
Indica que la página no puede mostrarse en un marco, incluso si está anidada en una página del mismo nombre de dominio.
-
SAMEORIGIN
Indica que la página se puede mostrar en el marco de la misma página de nombre de dominio. La especificación deja que los proveedores de navegadores decidan si esta opción se aplica al nivel superior, al padre o a toda la cadena; algunas personas piensan que esta opción no es muy útil a menos que todas las páginas antepasadas pertenezcan al mismo origen (origen). Consulte Compatibilidad del navegador para obtener información detallada sobre la compatibilidad.
-
ALLOW-FROM uri
obsoletoEsta es una directiva obsoleta y ya no funciona en los navegadores modernos, no la use. Cuando se admiten navegadores más antiguos, la página se puede mostrar en el marco de la fuente especificada. Tenga en cuenta que en versiones anteriores de Firefox, sufre
SAMEORIGIN
el mismo problema que: no verifica todas las páginas anteriores del marco para ver si son del mismo origen.Content-Security-Policy HTTP
Hay unaframe-ancestors
directiva , puede usar esta directiva en su lugar.
ejemplo
Nota: ¡ No X-Frame-Options
es ! por ejemplo, no <meta http-equiv="X-Frame-Options" content="deny">
tiene ningún efecto. ¡No lo uses así! X-Frame-Options
Solo funciona si los encabezados HTTP se configuran como en el ejemplo a continuación .
Configurar apache
配置 Apache 在所有页面上发送 X-Frame-Options
响应头,需要把下面这行添加到 'site' 的配置中:
Header always set X-Frame-Options "SAMEORIGIN"
要将 Apache 的配置 X-Frame-Options
设置成 DENY
,按如下配置去设置你的站点:
Header set X-Frame-Options "DENY"
配置 Nginx
配置 Nginx 发送 X-Frame-Options
响应头,把下面这行添加到 'http', 'server' 或者 'location' 的配置中:
add_header X-Frame-Options SAMEORIGIN always;
配置 IIS
配置 IIS 发送 X-Frame-Options
响应头,添加下面的配置到 Web.config
文件中:
<system.webServer>
...
<httpProtocol>
<customHeaders>
<add name="X-Frame-Options" value="SAMEORIGIN" />
</customHeaders>
</httpProtocol>
...
</system.webServer>
配置 HAProxy
配置 HAProxy 发送 X-Frame-Options
响应头,添加这些到你的前端、监听(listen),或者后端的配置里面:
rspadd X-Frame-Options:\ SAMEORIGIN
或者,在较新的版本中:
http-response set-header X-Frame-Options SAMEORIGIN
配置 Express
要配置 Express 以发送 X-Frame-Options
响应头,你可以使用借助了frameguard
的 helmet
来设置首部。在你的服务器配置里面添加:
const helmet = require('helmet');
const app = express();
app.use(helmet.frameguard({ action: 'SAMEORIGIN' }));
或者,你也可以直接用 frameguard:
const frameguard = require('frameguard')
app.use(frameguard({ action: 'SAMEORIGIN' }))