点击参考这个
来源:ojhg风暴中心SaaS云监测平台,ojhg明鉴远程安全评估系统,lymg
1、http慢速攻击
描述 | 解决 | 备注 |
---|
Slow HTTP DOS是一种应用层拒绝服务攻击,主要针对HTTP协议,攻击的成本很低,并且能够消耗服务器端资源,占用客户端连接数,导致正常用户无法连接服务器。 | 1.设置适当的超时时间(Apache默认启用了reqtimeout模块),规定请求头和请求体发送的时间以及频率 2.增加MaxClient(MaxRequestWorkers):增加最大连接数 | 由于我用的是SpringBoot内嵌项目,这里再写一下相应的方法:解决方案:1 设置Tomcat / server.xml文件 connectiontimeout 值,默认20000ms,修改为3000ms(Tomcat 自身安全漏洞)2 在jsp上设置AJAX的全局timeout时间(默认为30000ms) $.ajaxSetup({timeout:3000}); |
2、NoXPermittedCrossDomainPolicies
描述 | 解决 | 备注 |
---|
Web 服务器对于 HTTP 请求的响应头中缺少 X-Permitted-Cross-Domain-Policies,这将导致浏览器提供的安全特性失效。 当一些在线的 Web Flash 需要加载其他域的内容时,很多 Web 会通过设置一个 crossdomain.xml 文件的方式来控制其跨域方式。很有可能有些开发者并没有修改 crossdomain.xml 文件的权限,但是又有和跨域的 Flash 共享数据的需求,这时候可以通过设置 X-Permitted-Cross-Domain-Policies 头的方式来替代 crossdomain.xml 文件,其可选的值有: none master-only by-content-type by-ftp-filename all。Web 服务器对于 HTTP 请求的响应头中缺少 X-Permitted-Cross-Domain-Policies,这将导致浏览器提供的安全特性失效,更容易遭受 Web 前端黑客攻击的影响。 | 1)修改服务端程序,给 HTTP 响应头加上 X-Permitted-Cross-Domain-Policies 如果是 java 服务端,可以使用如下方式添加 HTTP 响应头 response.setHeader(“X-Permitted-Cross-Domain-Policies”, “value”) 如果是 php 服务端,可以使用如下方式添加 HTTP 响应头 header(“X-Permitted-Cross-Domain-Policies: value”) 如果是 asp 服务端,可以使用如下方式添加 HTTP 响应头 Response.AddHeader “X-Permitted-Cross-Domain-Policies”, “value” 如果是 python django 服务端,可以使用如下方式添加 HTTP 响应头 response = HttpResponse() response[“X-Permitted-Cross-Domain-Policies”] = “value” 如果是 python flask 服务端,可以使用如下方式添加 HTTP 响应头 response = make_response() response.headers[“X-Permitted-Cross-Domain-Policies”] = “value”;2)修改负载均衡或反向代理服务器,给 HTTP 响应头加上 X-Permitted-Cross-Domain-Policies 如果使用 Nginx、Tengine、Openresty 等作为代理服务器,在配置文件中写入如下内容即可添加 HTTP 响应头: add_header X-Permitted-Cross-Domain-Policies value; 如果使用 Apache 作为代理服务器,在配置文件中写入如下内容即可添加 HTTP 响应头: Header add X-Permitted-Cross-Domain-Policies “value”。 | 由于我是SpringBoot项目,这里再写一下相应的方法:在com.XXX.filter包下加一个全局的响应头过滤器,然后在启动类上加上:@ServletComponentScan(“com.XXX.filter”) ,下面贴出代码: |
@Component
public class AddResponseHeaderFilter extends OncePerRequestFilter {
@Override
protected void doFilterInternal(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse,
FilterChain filterChain) throws ServletException, IOException {
httpServletResponse.addHeader("X-Frame-Options", "DENY");
httpServletResponse.addHeader("Cache-Control", "no-cache, no-store, must-revalidate, max-age=0");
httpServletResponse.addHeader("Cache-Control", "no-cache='set-cookie'");
httpServletResponse.addHeader("Pragma", "no-cache");
httpServletResponse.addHeader("X-Permitted-Cross-Domain-Policies", "none");
httpServletResponse.addHeader("X-Download-Options", "DENY");
String jSessionId=httpServletRequest.getSession().getId();
httpServletResponse.setHeader("Set-Cookie", "JSESSIONID="+jSessionId+"; Secure;HttpOnly;");
httpServletResponse.addHeader("Strict-Transport-Security","max-age=63072000; includeSubdomains; preload");
filterChain.doFilter(httpServletRequest, httpServletResponse);
}
}
3、会话Cookie中缺少secure属性
描述 | 解决 | 备注 |
---|
在应用程序测试过程中,检测到所测试的Web应用程序设置了不含“secure”属性的会话cookie。由于此会话cookie不包含“secure”属性,所以用户可以通过未加密的http协议传输Cookie,可能造成用户信息被窃听。 | 一般性的建议: [1]基本上,cookie的唯一必需属性是“name”字段,建议设置“secure”属性,以保证cookie的安全。 | 在SpringBoot中解决的方案: 在上面的代码段中的httpServletResponse.setHeader(“Set-Cookie”, “JSESSIONID=”+jSessionId+"; Secure;HttpOnly;");就是,设置全局的responseHeader即可 |
4、HTTP Strict-Transport-Security缺失
描述 | 解决 | 备注 |
---|
HTTP Strict Transport Security (通常简称为HSTS) 是一个安全功能,它告诉浏览器只能通过HTTPS访问当前资源, 禁止HTTP方式。HSTS的作用是强制客户端(如浏览器)使用HTTPS与服务器创建连接。 | 服务器开启HSTS的方法是,当客户端通过HTTPS发出请求时,在服务器返回的超文本传输协议响应头中包含Strict-Transport-Security字段。非加密传输时设置的HSTS字段无效。建议如果不能确保永远提供HTTPS服务,不要启用HSTS以及HSTS Preload List。因为一旦HSTS生效,之前的老用户在maxage过期前都会重定向到HTTPS,造成网站不能正确访问。 | 在上面的代码段中加入:httpServletResponse.addHeader(“Strict-Transport-Security”,“max-age=63072000; includeSubdomains; preload”);即可 |
s