存在" X-Frame-Options 响应头缺失 "问题,显示可能会造成跨帧脚本编制攻击
风险:攻击者可以使用一个透明的、不可见的iframe,覆盖在目标网页上,然后诱使用户在该网页上进行操作,此时用户将在不知情的情况下点击透明的iframe页面。通过调整iframe页面的位置,可以诱使用户恰好点击iframe页面的一些功能性按钮上,导致被劫持。
X-Frame-Options:
值有三个:
(1)DENY:表示该页面不允许在 frame 中展示,即便是在相同域名的页面中嵌套也不允许。
(2)SAMEORIGIN:表示该页面可以在相同域名页面的 frame 中展示。
(3)ALLOW-FROM https://example.com/:表示该页面可以在指定来源的 frame 中展示。
5.tomcat控制
tomcat/cnf/web.xml
通过tomcat控制最方便,不过实际配置过程中,版本过低的tomcat会启动不了,建议tomcat版本不要低于7.0.69 .
https://blog.csdn.net/u014465934/article/details/84199171
https://blog.csdn.net/qq_41211900/article/details/79907460
内容安全策略(CSP),其核心思想十分简单:网站通过发送一个 CSP 头部,来告诉浏览器什么是被授权执行的与什么是需要被禁止的。其被誉为专门为解决XSS攻击而生的神器。
1.前言
内容安全策略 (CSP) 是一个额外的安全层,用于检测并削弱某些特定类型的攻击,包括跨站脚本 (XSS) 和数据注入攻击等。无论是数据盗取、网站内容污染还是散发恶意软件,这些攻击都是主要的手段。
CSP 的实质就是白名单制度,开发者明确告诉客户端,哪些外部资源可以加载和执行,等同于提供白名单。它的实现和执行全部由浏览器完成,开发者只需提供配置。
CSP 大大增强了网页的安全性。攻击者即使发现了漏洞,也没法注入脚本,除非还控制了一台列入了白名单的可信主机。
2.CSP作用
限制资源获取
报告资源获取越权
https://www.freebuf.com/articles/web/138769.html
顾名思义,这个响应头是用来防范XSS的。最早是在IE8,现在主流浏览器都支持,并且默认都开启了XSS保护,用这个header可以关闭它。它有几种配置:
浏览器提供的XSS保护机制并不完美,但是开启后仍然可以提升攻击难度,总之没有特别的理由,不要关闭它。
X-XSS-Protection: 0; (关闭XSS过滤)
X-XSS-Protection: 1; (启用XSS过滤,如果检测到跨站脚本攻击,浏览器将清除页面(删除不安全的部分))
X-XSS-Protection: 1; mode=block (启用XSS过滤。 如果检测到攻击,浏览器将不会清除页面,而是阻止页面加载)。1; report=
https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Set-Cookie
https://www.antbaba.com/2018/09/14/%E5%85%B3%E4%BA%8Ehttp%E7%9B%B8%E5%BA%94%E4%B8%AD%E7%9A%84set-cookie/
只有客户端才能设置Cookie,服务端若想让客户端增加一个Cookie项,需要在应答时,在Http头部中,通过使用Set-Cookie,将要设置的Cookie项发送给客户端。这样客户端,在下次访问时,会带上该Cookie项。
Cookie相关的Http头
有 两个Http头部和Cookie有关:Set-Cookie和Cookie。
Set-Cookie由服务器发送,它包含在响应请求的头部中。它用于在客户端创建一个Cookie
Cookie头由客户端发送,包含在HTTP请求的头部中。注意,只有cookie的domain和path与请求的URL匹配才会发送这个cookie。
https://blog.csdn.net/TivonaLH/article/details/86310298
功能:
互联网上的资源有各种类型,通常浏览器会根据响应头的Content-Type字段来分辨它们的类型。然而,有些资源的Content-Type是错的或者未定义。这时,某些浏览器会启用MIME-sniffing来猜测该资源的类型,解析内容并执行。X-Content-Type-Options告诉浏览器content-type是由自己定义的。
如果服务器发送响应头 "X-Content-Type-Options: nosniff",则 script 和 styleSheet 元素会拒绝包含错误的 MIME 类型的响应。这是一种安全功能,有助于防止基于 MIME 类型混淆的攻击。
简单理解为:通过设置"X-Content-Type-Options: nosniff"响应标头,对 script 和 styleSheet 在执行是通过MIME 类型来过滤掉不安全的文件
https://blog.csdn.net/u013310119/article/details/84861900
package com.zichen.xhkq.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class XFrameOptionsHeaderFilter implements Filter {
String address = "*";//默认的访问地址,目前没有限制地址,* 代替
public XFrameOptionsHeaderFilter() {
}
@Override
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException {
//必须
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) resp;
//实际设置
/*X-Frame-Options 响应头有三个可选的值:
DENY:页面不能被嵌入到任何iframe或frame中;
SAMEORIGIN:页面只能被本站页面嵌入到iframe或者frame中;
ALLOW-FROM:页面允许frame或frame加载。*/
response.setHeader("x-frame-options", "SAMEORIGIN"); //只允许嵌入本网站页面
response.setHeader("Content-Security-Policy", "default-src https: http: 'unsafe-inline' 'unsafe-eval';connect-src https: http:"); //针对safi和chrome
response.setHeader("Set-Cookie", "cookiename=value;Path=/;Domain=domainvalue;Max-Age=seconds;HTTPOnly");
chain.doFilter(req, resp);
}
@Override
public void destroy() {
// TODO Auto-generated method stub
}
@Override
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
}
}