app.Use(async (context, next) =>
context.Response.Headers.Add("X-Frame-Options", "ALLOW-FROM http://localhost:8080 http://localhost:8088");
await next();
app.Use(async (context, next) =>
context.Response.Headers.Add("Content-Security-Policy", "frame-ancestors localhost:8080 localhost:*;");
await next();
原因:谷歌浏览器较新版不支持ALLOW-FROM办法:用另一个响应头Content-Security-Policy代替,配置其中的frame-ancestorsnetCore写法(Startup.cs)(1)旧app.Use(async (context, next) =>{ context.Response.Headers.Add("X-Frame-Options", "ALLOW-FROM http://localhost:8080 http://localhost
用于Koa的 HTTP响应标头实用程序。
:light_bulb: 该中间件是为 v2.xx设计的,并使用来实现ES5兼容性。
:wrench: 该中间件正在开发中。 反馈/公关受到欢迎和鼓励。 如果您想在这个项目上进行合作,请告诉我。
$ npm install --save koa-xframe
用法和API
import Koa from 'koa' ;
import xFrame from 'koa-xframe' ;
const app = new Koa ( ) ;
// default settings -> set X-Frame-Options to 'DENY'
app . use ( xFrame ( ) ) ;
// custom settings
// -> set X-Frame-Options to 'DENY'
app . use ( xFrame (
点击劫持,clickjacking,也被称为UI-覆盖攻击。这个词首次出现在2008年,是由互联网安全专家罗伯特·汉森和耶利米·格劳斯曼首创的。
它是通过覆盖不可见的框架误导受害者点击。
虽然受害者点击的是他所看到的网页,但其实他所点击的是被黑客精心构建的另一个置于原网页上面的透明页面。
这种攻击利用了HTML中<iframe>标签的透明属性。
就像一张图片上面铺了...
使用Spring Security的过程中,需要使用iframe来引入其他域的页面,页面会报X-Frame-Options的错误,试了好几种方法一直未能很好的解决这个问题。
这里涉及到Spring Security的一个配置,Spring Security下,X-Frame-Options默认为DENY,非Spring Security环境下,X-Frame-Options的默认大多也是DENY...
X-Frame-Options HTTP响应头是用来确认是否浏览器可以在frame或iframe标签中渲染一个页面,网站可以用这个头来保证他们的内容不会被嵌入到其它网站中,以来避免点击劫持。
恶意攻击者可以利用漏洞攻击做到:
击者可以使用一个透明的、不可见的iframe,覆盖在目标网页上,然后诱使用户在该网页上进行操作,此时用户将在不知情的情况下点击透明的iframe页面。通过调整iframe页面的位置,可以诱使用户恰好点击iframe页面的一些功能性按钮上,导致被劫持。
< iframe src =" https://example.com/ " > </ iframe >
< iframe src =" http://localhost:3000?url=https://example.com/ " > </ iframe >
在2018年,W3C将ALLOW-FROM选项从X-Frame-Options中删除,因为它存在一些安全问题。因此,现代浏览器都不再支持ALLOW-FROM选项。
相反,您可以使用Content-Security-Policy(CSP)头来控制您的网站是否可以嵌入到其他网站中。您可以在CSP头中包含frame-ancestors指令,以指定允许嵌入您网站的父级网站的列表。例如,以下CSP头会允许来自example.com和example.net的网页嵌入到您的网页中:
Content-Security-Policy: frame-ancestors 'self' example.com example.net;
请注意,如果您同时使用X-Frame-Options和CSP头,则X-Frame-Options头将覆盖CSP头。因此,如果您想使用CSP头来控制嵌入行为,请确保不要同时使用X-Frame-Options头。