配置或学习记录 - Web安全漏洞问题解决方案参考

下面是由AppScan测试工具所扫描出的一些Web安全漏洞,将解决方案记录在此。(应用使用了Nginx作为反向代理服务器,本文的解决方案都是基于Nginx配置的)

安全漏洞清单:

在这里插入图片描述

解决方案(以下涉及的配置文件指Nginx服务器的配置文件nginx.conf):

1.加密会话(SSL)Cookie中缺少Secure属性

我这里使用proxy_cookie_path是因为,后端应用里写了添加Set-Cookie请求头的代码(但没有加上,Secure、SameSite属性,在代码里加上也是ok的),所以在Nginx我做下替换。
在这里插入图片描述
在这里插入图片描述
表示将Path的值由“/cas”替换成“/cas;SameSite=None;Secure”
相当于将后端代码修改为 -
httpresponse.setHeader("Set-Cookie", "JSESSIONID" + httprequest.getSession().getId() + "Path=/cas;SameSite=None;Secure;HttpOnly=true")

Set-Cookie响应头参数:

HttpOnly

在Cookie中设置了“HttpOnly”属性,通过程序(JS脚本、Applet等)将无法读取到Cookie信息。
将HttpOnly 设置为true 防止程序获取cookie后进行攻击。–https://blog.csdn.net/ztnhnr/article/details/109447507

Secure :

安全性,指定Cookie是否只能通过https协议访问,一般的Cookie使用HTTP协议既可访问。

设置了Secure
(没有值),则只有当使用https协议连接时cookie才可以被页面访问。可用于防止信息在传递的过程中被监听捕获后信息泄漏。 --https://blog.csdn.net/ztnhnr/article/details/109447507

SameSite:

Chrome浏览器在51版本后为 Cookie 新增的属性,用来防止 CSRF 攻击和用户追踪。可以设置三个值:Strict、
Lax、 None

Strict:完全禁止第三方 Cookie,跨站点时,任何情况下都不会发送 Cookie。换言之,只有当前网页的 URL
与请求目标一致,才会带上 Cookie。Set-Cookie: CookieName=CookieValue;
SameSite=Strict;

Lax:规则稍稍放宽,大多数情况也是不发送第三方 Cookie,但是导航到目标网址的 Get 请求除外。Set-Cookie:
CookieName=CookieValue; SameSite=Lax;设置了Strict或Lax以后,基本就杜绝了 CSRF
攻击。当然,前提是用户浏览器支持 SameSite 属性。

None:Chrome
计划将Lax变为默认设置。这时,网站可以选择显式关闭SameSite属性,将其设为None。不过,前提是必须同时设置Secure属性(Cookie
只能通过 HTTPS 协议发送),否则无效。Set-Cookie: key=value; SameSite=None; Secure
–https://blog.csdn.net/ztnhnr/article/details/109447507

2.检测到弱密码套件:不支持完全前向保密、弱密码套件-ROBOT 攻击: 服务器支持易受攻击的密码套件、检测到SHA-1密码套件(这里前端请求使用的是https,http请求请忽略)

这个具体还要看安全报告,扫描到哪些弱密码套件(加密算法),我的是以下这些,于是添加**!RSA**用于表示不使用RSA系列的加密算法
在这里插入图片描述

在这里插入图片描述
3.HTTP Strict-Transport-Security头缺失或不安全

添加请求头"Strict-Transport-Security", 值为" ‘max-age=63072000;includeSubDomains’ "

HTTP Strict Transport Security (通常简称为HSTS)
是一个安全功能,它告诉浏览器只能通过HTTPS访问当前资源, 禁止HTTP方式.

max-age代表HSTS在客户端的生效时间。 includeSubdomains表示对所有子域名生效
在这里插入图片描述
(HSTS 具体让浏览器做了什么,可以看下文章https://blog.csdn.net/u012560410/article/details/86489979)

4.具有不安全、不正确或缺少SameSite属性的Cookie
在这里插入图片描述
同第一点

5.在应用程序中发现不必要的Http响应头

我这里只是简单隐藏了服务器版本信息,但依旧会返回Server:nginx
在这里插入图片描述

6."Content-Security-Policy"头中缺少"Frame-Anchors"策略或策略不安全

添加请求头"X-Frame-Options", 值为"SAMEORIGIN"
在这里插入图片描述

X-Frame-Options - 用来给浏览器指示允许一个页面可否在 , 或者
中展现的标记。网站可以使用此功能,来确保自己网站的内容没有被嵌套到别人的网站中,也从而避免了点击劫持 (ClickJacking)
的攻击。 --https://blog.whsir.com/post-3919.html

X-Frame-Options的三个参数:
(1)DENY

表示该页面不允许在frame中展示,即便是在相同域名的页面中嵌套也不允许。

(2)SAMEORIGIN

表示该页面可以在相同域名页面的frame中展示。

(3)ALLOW-FROM uri

表示该页面可以在指定uri的frame中展示

7."Content-Security-Policy"头中缺少"Object-Src"策略或策略不安全

添加请求头"Content-Security-Policy", 值为" object-src ‘none’; script-src ‘self’ ‘unsafe-inline’ "
在这里插入图片描述

8."Content-Security-Policy"头中缺少"Script-Src"策略或策略不安全

同上,这里将将object-src和script-src策略放在一起,是为了避免AppScan测试工具的漏扫,当然也可以分开配置在两个Content-Security-Policy请求头中。

9.“X-XSS-Protection”头缺失或不安全

添加请求头"X-Xss-Protection", 值为"1;mode=block" (指启用XSS保护,并在检查到XSS攻击时,停止渲染页面)
在这里插入图片描述

10.支持较老的TLS版本(这里前端请求使用的是https,http请求请忽略)

不再使用老版本TLS1.1(不配置ssl_protocols的话默认会使用TlS1.1的 - ssl_protocols默认配置:ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_protocols - 用于配置加密安全协议TLS的版本
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值