目标服务器没有返回一个X-Frame-Options头。
攻击者可以使用一个透明的、不可见的iframe,覆盖在目标网页上,然后诱使用户在该网页上进行操作,此时用户将在不知情的情况下点击透明的iframe页面。通过调整iframe页面的位置,可以诱使用户恰好点击iframe页面的一些功能性按钮上,导致被劫持。
添加X-frame-options响应头。
赋值有如下三种:
(1)DENY:不能被嵌入到任何iframe或frame中。
(2)SAMEORIGIN:页面只能被本站页面嵌入到iframe或者frame中。
(3)ALLOW-FROM uri:只能被嵌入到指定域名的框架中。
我用的是拦截器
import javax.servlet.*;
import java.io.IOException;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* 拦截器-配置响应头部 X-Frame-Options
* @author potato
* @date 2021/9/8 11:04
*/
@WebFilter(filterName = "frameFilter", urlPatterns = "/*")
public class FrameConfig implements Filter {
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
//必须
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) res;
//实际设置
response.setHeader("X-Frame-Options", "SAMEORIGIN");
// response.setHeader("X-Frame-Options", "DENY");
//调用下一个过滤器(这是过滤器工作原理,不用动)
chain.doFilter(request, response);
}
public void init(FilterConfig config) throws ServletException {
}
public void destroy() {
}
}
个人日常积累,仅供参考
|