首页 > 其他分享 >什么是跨域请求未在攻击?浏览器在这方面做了哪些努力? 为什么随机UUID做token 可以解决跨域请求伪造攻击?

什么是跨域请求未在攻击?浏览器在这方面做了哪些努力? 为什么随机UUID做token 可以解决跨域请求伪造攻击?

时间:2024-07-04 20:25:02浏览次数:14  
标签:浏览器 跨域 攻击 用户 token CSRF 请求

跨域请求伪造攻击(Cross-Site Request Forgery,简称CSRF)是一种恶意攻击,其中攻击者诱使用户在已认证的会话中执行未授权的操作。通过在受害者访问的站点中嵌入恶意请求,攻击者可以利用用户的身份来执行一些用户未授权的操作,如转账、修改资料等。

跨域请求伪造攻击(CSRF)

攻击原理

  1. 用户登录认证网站A:用户在浏览器中登录了一个网站A(例如银行网站),并生成了一个有效的会话cookie。
  2. 用户访问恶意网站B:在登录网站A后,用户无意间访问了另一个恶意网站B。
  3. 恶意请求:恶意网站B包含一个恶意脚本,该脚本通过自动提交表单或发送请求,向网站A发送请求。由于用户已经在网站A登录,浏览器会自动附带用户的会话cookie。
  4. 服务器接受请求:网站A收到请求并认为是用户合法操作,因为请求附带了有效的会话cookie。

解决CSRF的常用方法

  1. CSRF Token:在每个敏感操作的请求中包含一个唯一的、不可预测的token。服务器生成并验证这个token,确保请求是由合法用户发起的。
  2. SameSite Cookie 属性:通过设置cookie的SameSite属性,限制跨站点请求中cookie的发送。例如,设置为StrictLax
  3. Referer和Origin检查:服务器检查请求头中的RefererOrigin字段,确保请求来源于可信任的站点。

浏览器在防范CSRF方面的努力

浏览器通过多种方式帮助防范CSRF攻击:

  1. SameSite Cookie 属性:浏览器支持SameSite属性,可以设置cookie只在同站点请求中发送。例如:
    Set-Cookie: sessionid=abc123; SameSite=Strict
    
  2. CORS(跨域资源共享):浏览器实现了严格的跨域请求策略(CORS),默认情况下,浏览器不会允许跨域的资源请求,除非服务器明确允许。

为什么随机UUID做token可以解决CSRF攻击

随机UUID作为CSRF Token的优势

  1. 不可预测性:UUID是一个全局唯一的标识符,具有高度的随机性和不可预测性。这使得攻击者无法猜测或生成有效的token。
  2. 一次性使用:服务器为每个用户会话生成一个唯一的CSRF token,并在每次敏感操作时验证。即使攻击者知道一个token,它也只在特定的用户会话中有效,不能重复使用。
  3. 独立于会话:CSRF token独立于用户的会话cookie,即使攻击者获得了会话cookie,也无法伪造CSRF token。

工作机制

  1. 生成Token:服务器在用户登录或访问敏感操作页面时,生成一个随机的UUID作为CSRF token,并将其嵌入到HTML表单或通过JavaScript添加到请求中。
  2. 提交Token:当用户提交表单或发送请求时,CSRF token作为请求参数或请求头的一部分发送到服务器。
  3. 验证Token:服务器接收到请求后,验证CSRF token是否有效。如果验证通过,则执行相应操作;否则拒绝请求。

例子

生成并验证CSRF token的示例:

生成Token(服务器端)

// 生成CSRF token
String csrfToken = UUID.randomUUID().toString();
session.setAttribute("csrfToken", csrfToken);

在表单中嵌入Token(客户端)

<form method="post" action="/submit">
  <input type="hidden" name="csrfToken" value="${csrfToken}">
  <!-- 其他表单字段 -->
  <button type="submit">Submit</button>
</form>

验证Token(服务器端)

// 从请求中获取CSRF token
String requestCsrfToken = request.getParameter("csrfToken");
String sessionCsrfToken = (String) session.getAttribute("csrfToken");

// 验证token
if (sessionCsrfToken == null || !sessionCsrfToken.equals(requestCsrfToken)) {
    throw new SecurityException("Invalid CSRF token");
}

通过这种方式,UUID作为CSRF token可以有效防范CSRF攻击,确保请求的合法性和安全性。

标签:浏览器,跨域,攻击,用户,token,CSRF,请求
From: https://www.cnblogs.com/gongchengship/p/18284581

相关文章

  • 获取请求响应的进度百分比,两种方法
            前段时间做了loading动画,增加用户体验,不至于请求时间误认为程序卡死。后来发现当网络不好或者数据过大时,请求时间比较长,没有返回完结果之前,loading一直在加载,于是改做成百分比显示进度,让客户实时感觉到程序在运行。就像下面这样。本文用两种请求方法'Xhr'......
  • 对于浏览器请求接口限制,是否有必要开发一套请求任务管理器组件,自主的去控制请求的并发
    在现代Web开发中,浏览器对同时发起的网络请求确实存在一定的限制,这个限制通常与浏览器的安全性和性能优化有关。不同浏览器对最大并发连接数有不同的默认设置,例如,Chrome和Firefox大致允许每个域名上同时有6到8个TCP连接,而IE可能更低。当超过这个限制时,额外的请求会被排队等待,直......
  • 前端Ajax中请求数据中body和query传参的方法
    一、post请求可以传body和query两种形式的参数:【body传参】:$.ajax({type:"POST",url:"xxxxxxxxxxxxxx",data:{ids:tempID}...})【body传参,当要求传JSON字符串格式的参数时】:$.ajax({type:"POST",url:"xxxxxxxxxxxx......
  • Web请求过程
            重点:需要理解从用户在浏览器点击一条链接开始,到我们的服务器返回结果给浏览器,中间发生了哪些过程,需要哪些技术.概述    互联网的网络架构已从传统的C/S架构转变为了B/S架构.    B/S架构的优点:客户端:使用统一的浏览器(Browser),使......
  • uniapp和flask实现跨域请求
      新书上架~......
  • 1s内控制向某个请求请求的次数
    背景有的时候后端提供的接口对相同的IP进行限制,在某个时间内不能发送超过X条的请求,一旦超过指定的请求数会导致后续请求接口会出现异常。效果需求比如:在1s内最多同时发送2个请求,多出来的请求在后续的1s或者后续的Ns中发起代码<template><divclass="app"><el-divid......
  • 什么是 HTTP Range请求(范围请求)
    HTTPRange请求,也称为范围请求,是一种HTTP协议的功能,它允许客户端请求服务器发送一个资源的一部分,而不是整个资源。这种请求通常用于处理大文件的下载或流媒体服务,尤其是在网络不稳定或需要断点续传的场景中非常有用。范围请求的基本语法如下:Range:bytes=<start_byte>-<end_b......
  • csrf跨站请求,钓鱼网站实现示例,CSRF校验,CSRF相关装饰器,Auth模块,扩展Auth表
    ⅠDjango框架之csrf跨站请求【一】跨站请求伪造介绍【1】引入CSRF(Cross-SiteRequestForgery)跨站请求伪造是一种常见的网络攻击方式。攻击者通过诱导受害者访问恶意网站或点击恶意链接将恶意请求发送到目标网站上利用受害者在目标网站中已登录的身份来执行某些操作从而......
  • open ai sdk 的额外请求头说明 x-stainless
    使用openai-python,openai-node会有额外的x-stainless系列请求头,特此记录一下,大概是记录了一些平台架构信息,但是这些请求头不常见,所以使用ollama等平台的时候,允许cors的时候,最好通过nginx代理,允许这些头,否则会请求接口失败https://community.openai.com/t/system-data-is......
  • 区块链技术如何有效防御DDOS攻击?揭秘前沿安全策略!
    在当今数字化时代,DDOS(分布式拒绝服务)攻击已成为网络安全的重大威胁之一。这些攻击通过控制大量计算机或网络设备,向目标服务器发送海量请求,导致服务器过载、响应缓慢甚至完全崩溃。然而,区块链技术作为一种新兴的安全解决方案,正逐步展现出在DDOS防御中的巨大潜力。区块链技术的......