数据安全防护方案之CSRF防护简介
首先,我们描述了httphead的三个字段:主机、引用和源。
主机:请求头显示要请求的服务器主机名和端口号。
referer请求标头包含当前请求页的源页地址。也就是说,当前页面通过原始页面的链接进入。通常,服务端可以使用referer请求头来识别访问源、执行统计分析、日志和缓存优化。根据referer,请求包含服务器名称和路径的详细URL,浏览器自动添加到HTTP请求头中,而无需手动配置。
请求的初始字段origin表示请求来自哪个站点。此字段仅显示服务器名称,不包含路径信息。第一个用于IRS请求或post请求,来源指示请求来自哪个站点,服务器名称仅包含路径信息。浏览器将自动添加到HTTP请求头中,无需手动配置。

CSRF(跨站点请求伪造),中文名称:伪造跨站点请求。了解CSRF攻击,攻击者窃取了您的身份并以您的名义恶意声称。使用CSRF可以发送电子邮件、发送信息、盗取您的帐户、购买商品或更改虚拟货币……问题在于隐私泄露和财产安全。其原理是,攻击者在站点后端构建功能界面的请求地址,并诱导用户以特定方式单击或自动加载请求地址。当用户在登录状态下向服务器发送此请求时,可能会将其误认为是用户的合法操作。
要完成CSRF攻击,攻击是使用受攻击站点的登录证书并提交操作,而不是直接窃取数据。攻击者预测攻击站点接口的所有参数并伪造请求,受害者必须按顺序完成两个阶段。
1、登录到受信任的站点a并在本地创建cookie。
2、B用户启动浏览器并访问a。
CSRF的两个特点:
CSRF(通常)发生在第三方域中。
CSRF攻击者无法获取Cookie等信息,只能使用。
数据安全防护方案之CSRF防护--防御计划
1、身份验证码:
该方案的概念是允许用户在每次提交时填写表中的随机字符串。这个解决方案可以完全由CSRF解决,但在个人可用性方面似乎不是很好。CSRF攻击通常无法在用户知道之前伪造请求。由于身份验证代码需要与用户和应用程序交互以完成最终请求,因此CSRF攻击无法获取身份验证代码,因此身份验证代码通常可以抑制CSRF攻击。但是,身份验证代码不是通用的。考虑到用户体验,您不能将身份验证代码添加到网站上的所有操作中。因此,验证代码只是保护CSRF的辅助工具,而不是主要解决方案。

Cookie名称套件属性:限制第三方Cookie,降低安全风险,防止CSRF攻击和用户跟踪。您可以设置三个值。
2、严格:
严格是第三方cookie中最严格和禁止的,不会以任何方式在网站上发送cookie。要导入cookie,当前网页的URL必须与目标匹配。
lax:lax规则稍微宽松,通常不发送第三方cookie,但不包括移动到目标站点的get请求。
Chrome计划将lax更改为首选项。此时,可以显式关闭站点并将其设置为“无”。但是,您需要同时设置安全属性(cookie只能在HTTPS协议中传输)。否则无效。
3、同源性检查:
HTTP协议有两个用于所有异步请求的头,用于显示源域名。这两个头部在启动请求时大多会自动连接到浏览器,无法在前端进行自定义。服务器可以解析两个头的域名以确定请求的源域。检查此请求字段以查看请求是否已从您的站点发送。您可以通过拒绝此站点以外的请求来避免CSRF攻击。
总的来说,同源性检测是一种相对简单的预防方法,可以防止大多数CSRF攻击,但这并不完全。具有高安全性要求的网站和具有大量用户的网站需要保护重要的界面。
4、添加令牌:
CSRF攻击的成功是因为攻击者可以完全伪造用户的请求。由于所有这些用户身份验证信息都存在于cookie中,因此攻击者可以使用用户自己的cookie通过安全身份验证,而不知道身份验证信息。为了保护CSRF,攻击者必须输入不能伪造的信息,而这些信息不存在于cookie中。生成的令牌作为参数添加到HTTP请求中,并可以在服务器上创建阻止程序来验证令牌。如果请求对于令牌或令牌内容不正确,请考虑CSRF攻击的可能性并拒绝请求。
当客户端请求页面时,服务器随机创建一个令牌,然后将令牌安装在会话中,以将令牌发送给客户端。当下一个客户端发送请求时,令牌将与表单一起发送到服务器。
