当前位置: 首页 > news >正文

#渗透测试#SRC漏洞挖掘#CSRF漏洞的防御

 免责声明 本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停止本文章阅读。

目录

一、常见的防御措施

1.验证码:

2.Referer验证:

3.基于Token的验证:

4.双重提交Cookie:

5.自定义请求头:

5.SameSite属性:

二、 CSRF防御措施的优缺点对比

一、CSRF令牌(CSRFToken)

二、Referer检查

三、双重Cookie(DoubleSubmitCookie)

四、验证码

五、使用POST替代GET

三、 CSRF的多层次防御

服务器端防御:

用户端防御:

网络安全设备支持:

四、 CSRF防御措施的实际案例分析

一、CSRF令牌的应用案例

二、Referer检查的应用案例

三、双重Cookie的应用案例

四、验证码的应用案例

五、 CSRF攻击的最新趋势分析

一、利用新兴技术进行CSRF攻击

二、针对移动应用的CSRF攻击

三、针对API的CSRF攻击

四、防御措施的最新趋势


一、常见的防御措施

CSRF(跨站请求伪造)是一种常见的网络安全漏洞,它允许攻击者利用用户已经登录的身份信息,通过构造恶意请求,让用户在不知情的情况下执行一些操作。防御CSRF漏洞的方法有很多,以下是一些常见的防御措施:

1.验证码:

虽然验证码可以有效地防止CSRF攻击,但它会影响用户体验。每次用户提交表单时都需要输入验证码,这可能会让用户感到不便。

2.Referer验证:

通过验证HTTP请求头中的Referer字段来防止CSRF攻击。如果Referer字段不是当前系统的域名,那么这个请求很可能是CSRF攻击。但是,这种方法并不完全可靠,因为有些情况下服务器可能无法获取到Referer字段,比如从HTTPS跳转到HTTP的时候。

3.基于Token的验证:

这是目前最为推荐的防御方法。服务器在生成表单时,会同时生成一个随机的Token,并将其嵌入到表单中。当用户提交表单时,服务器会验证这个Token是否合法。由于Token是随机生成的,攻击者很难猜测到正确的Token,因此可以有效地防止CSRF攻击。

4.双重提交Cookie:

这种方法要求在每个用户的请求中,除了在Cookie中设置CSRF令牌外,还在请求参数中设置相同的CSRF令牌。服务器在接收到请求后,会比较Cookie和请求参数中的CSRF令牌是否一致,如果不一致就会拒绝该请求。

5.自定义请求头:

类似于双重提交Cookie,这种方法要求在每个请求中,除了在Cookie中设置CSRF令牌外,还在请求头中设置相同的CSRF令牌。这样可以防止CSRF攻击者伪造请求参数,提高了安全性。

5.SameSite属性:

这是一种较新的防御方法。通过在Set-Cookie头部设置SameSite属性,可以指示浏览器不要将Cookie随跨站请求一起发送。这样可以有效地防止CSRF攻击,但需要注意的是,这种方法并不能完全替代其他的防御措施,因为它并不能防止所有的CSRF攻击场景。

二、 CSRF防御措施的优缺点对比

CSRF(跨站请求伪造)是一种常见的网络安全漏洞,攻击者利用用户已登录的身份信息,在用户不知情的情况下构造恶意请求,执行非法操作。为了防御CSRF攻击,有多种措施可供选择,每种措施都有其优缺点。

一、CSRF令牌(CSRFToken)

优点:

  • 安全性高:CSRF令牌是一种随机生成的唯一标识,攻击者难以伪造。

  • 适用范围广:适用于所有需要进行用户身份验证和具有修改操作的页面。

缺点:

  • 实现复杂度较高:需要在前后端都进行相应的处理,确保令牌的生成、验证和存储。

  • 可能的性能影响:如果令牌管理不当,可能会对系统性能产生一定影响。

二、Referer检查

优点:

  • 简单易用:Referer检查是HTTP协议的一部分,无需额外实现。

  • 防范站外请求:能够有效防止来自站外的CSRF攻击。

缺点:

  • 可靠性问题:Referer字段可以被篡改或删除,因此不能完全依赖。

  • 对站内链接无效:如果攻击者能够构造站内链接进行CSRF攻击,Referer检查将失效。

三、双重Cookie(DoubleSubmitCookie)

优点:

  • 安全性较高:通过双重验证(Cookie和请求中的token)来确保请求的合法性。

  • 用户体验好:不需要用户输入额外的验证码等信息。

缺点:

  • 实现复杂度较高:需要在前后端都进行相应的处理,并确保Cookie和token的安全传输和存储。

  • 可能的兼容性问题:某些浏览器或网络环境可能对Cookie的使用有限制。

四、验证码

优点:

  • 安全性极高:验证码是一种用户交互机制,能够确保请求来自用户本人。

  • 防止自动化攻击:验证码能够有效防止自动化脚本进行CSRF攻击。

缺点:

  • 用户体验差:用户需要输入验证码,增加了操作复杂度。

  • 可能被绕过:如果验证码实现不当,攻击者可能会找到绕过验证码的方法。

五、使用POST替代GET

优点:

  • 提高攻击成本:使用POST方法提交请求,攻击者需要构造更复杂的请求来实施CSRF攻击。

缺点:

  • 并非完全防御:即使使用POST方法,攻击者仍然可以通过其他方式构造恶意请求。

  • 可能影响用户体验:某些情况下,使用POST方法可能会增加页面加载时间或导致其他用户体验问题。

三、 CSRF的多层次防御

  1. 服务器端防御:
    • 实现CSRF令牌验证机制,确保每个敏感操作请求都带有有效的CSRF令牌。

    • 部署防火墙和入侵检测系统,监控并阻止异常流量,识别并阻止CSRF攻击。

  2. 用户端防御:
    • 提示用户确认敏感操作,避免误操作导致的安全风险。

    • 使用安全浏览器插件,帮助检测并拦截可疑的CSRF请求。

  3. 网络安全设备支持:
    • 部署防火墙和入侵检测系统,监控并阻止异常流量,识别并阻止CSRF攻击。

    • 使用Web应用防火墙(WAF)来自动检测和阻止CSRF攻击。

四、 CSRF防御措施的实际案例分析

一、CSRF令牌的应用案例

案例1:电商网站的订单提交

在一个电商网站中,用户在购物车中选择商品并提交订单。为了防止CSRF攻击,网站在每个订单提交表单中嵌入了一个CSRF令牌。当用户提交订单时,服务器会验证该令牌是否有效。如果令牌无效,服务器将拒绝该请求。

案例2:银行网站的资金转移

在一个银行网站中,用户可以进行资金转移操作。为了防止CSRF攻击,网站在每个资金转移表单中嵌入了一个CSRF令牌。当用户提交资金转移请求时,服务器会验证该令牌是否有效。如果令牌无效,服务器将拒绝该请求。

二、Referer检查的应用案例

案例1:社交媒体平台的用户资料更新

在一个社交媒体平台中,用户可以更新个人资料。为了防止CSRF攻击,网站会检查HTTP头部的Referer字段,确保请求来源于信任的源。如果Referer字段不匹配,服务器将拒绝该请求。

案例2:电子邮件服务的设置更改

在一个电子邮件服务中,用户可以更改账户设置。为了防止CSRF攻击,网站会检查HTTP头部的Referer字段,确保请求来源于信任的源。如果Referer字段不匹配,服务器将拒绝该请求。

三、双重Cookie的应用案例

案例1:在线学习平台的课程注册

在一个在线学习平台中,用户可以注册课程。为了防止CSRF攻击,网站采用了双重Cookie策略。在每个请求中,服务器会验证Cookie和请求参数中的CSRF令牌是否一致。如果令牌不一致,服务器将拒绝该请求。

案例2:医疗服务平台的预约挂号

在一个医疗服务平台中,用户可以预约挂号。为了防止CSRF攻击,网站采用了双重Cookie策略。在每个请求中,服务器会验证Cookie和请求参数中的CSRF令牌是否一致。如果令牌不一致,服务器将拒绝该请求。

四、验证码的应用案例

案例1:在线支付平台的付款确认

在一个在线支付平台中,用户在付款时需要输入验证码以确认操作。这可以有效防止CSRF攻击,因为攻击者无法猜测或伪造验证码。

案例2:政府服务平台的申请提交

在一个政府服务平台中,用户在提交申请时需要输入验证码以确认操作。这可以有效防止CSRF攻击,因为攻击者无法猜测或伪造验证码。

五、 CSRF攻击的最新趋势分析

CSRF(跨站请求伪造)攻击是一种常见的网络攻击手段,攻击者利用用户已登录的身份信息,在用户不知情的情况下构造恶意请求,执行非法操作。随着技术的发展和安全意识的提高,CSRF攻击的手段也在不断演变。以下是截至2024年11月的一些最新趋势分析。

一、利用新兴技术进行CSRF攻击

1. 利用WebSockets进行CSRF攻击

WebSockets是一种在单个TCP连接上进行全双工通信的协议。攻击者可以利用WebSockets的特性,构造恶意的WebSocket请求,绕过传统的CSRF防御措施,如Referer检查和CSRF令牌验证。

2. 利用Server-Sent Events (SSE)进行CSRF攻击

Server-Sent Events是一种允许服务器向客户端发送实时更新的技术。攻击者可以利用SSE的特性,构造恶意的SSE请求,绕过传统的CSRF防御措施。

二、针对移动应用的CSRF攻击

1. 移动应用中的CSRF攻击

随着移动应用的普及,攻击者开始将目光投向移动应用。移动应用中的CSRF攻击通常利用应用中的漏洞,如未正确验证CSRF令牌或未正确处理Referer字段。

2. 利用移动设备的特性进行CSRF攻击

移动设备通常具有更多的传感器和功能,如地理位置、摄像头等。攻击者可以利用这些特性,构造恶意请求,执行非法操作,如上传恶意图片或获取用户的地理位置信息。

三、针对API的CSRF攻击

1. API中的CSRF攻击

随着RESTful API的普及,攻击者开始将目光投向API。API中的CSRF攻击通常利用API的设计缺陷,如未正确验证CSRF令牌或未正确处理Referer字段。

2. 利用OAuth进行CSRF攻击

OAuth是一种授权协议,允许第三方应用访问用户的数据。攻击者可以利用OAuth的特性,构造恶意请求,执行非法操作,如获取用户的敏感信息。

四、防御措施的最新趋势

1. 使用SameSite Cookie属性

SameSite是一个新的Cookie属性,可以防止浏览器发送跨站点的Cookie。这可以有效防止CSRF攻击,因为攻击者无法利用用户的Cookie信息构造恶意请求。

2. 使用Content Security Policy (CSP)

CSP是一种允许开发者控制浏览器行为的策略。通过设置CSP,开发者可以限制哪些源可以发起请求,从而防止CSRF攻击。

3. 使用Token Binding

Token Binding是一种新的安全协议,可以防止攻击者伪造用户的请求。通过绑定请求中的令牌和用户的会话信息,可以有效防止CSRF攻击。

 CSRF攻击的手段在不断演变,攻击者开始利用新兴技术和特性进行攻击。同时,防御措施也在不断更新,开发者需要不断学习和应用最新的安全技术,以保护用户的安全。

 未完待续!!!!!

相关文章:

#渗透测试#SRC漏洞挖掘#CSRF漏洞的防御

免责声明 本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停…...

C++ | Leetcode C++题解之第542题01矩阵

题目&#xff1a; 题解&#xff1a; class Solution { public:vector<vector<int>> updateMatrix(vector<vector<int>>& matrix) {int m matrix.size(), n matrix[0].size();// 初始化动态规划的数组&#xff0c;所有的距离值都设置为一个很大的…...

RabbitMQ 不公平分发介绍

RabbitMQ 是一个流行的开源消息代理软件&#xff0c;它实现了高级消息队列协议&#xff08;AMQP&#xff09;。在 RabbitMQ 中&#xff0c;消息分发策略对于系统的性能和负载均衡至关重要。默认情况下&#xff0c;RabbitMQ 使用公平分发&#xff08;Fair Dispatch&#xff09;策…...

测试实项中的偶必现难测bug--一键登录失败

问题描述:安卓和ios有出现部分一键登录失败的场景,由于场景比较极端,衍生了很多不好评估的情况。 产生原因分析: 目前有解决过多次这种行为的问题,每次的产生原因都有所不同,这边根据我个人测试和收集复现的情况列举一些我碰到的: 1、由于我们调用的是友盟的一键登录的…...

危!这些高危端口再不知道问题就大了

号主&#xff1a;老杨丨11年资深网络工程师&#xff0c;更多网工提升干货&#xff0c;请关注公众号&#xff1a;网络工程师俱乐部 下午好&#xff0c;我的网工朋友。 端口作为网络通信的基本单元&#xff0c;用于标识网络服务和应用程序。 但某些端口由于其开放性和易受攻击的…...

Redis集群模式之Redis Sentinel vs. Redis Cluster

在分布式系统环境中&#xff0c;Redis以其高性能、低延迟和丰富的数据结构而广受青睐。随着数据量的增长和访问需求的增加&#xff0c;单一Redis实例往往难以满足高可用性和扩展性的要求。为此&#xff0c;Redis提供了两种主要的集群模式&#xff1a;Redis Sentinel和Redis Clu…...

Leetcode 罗马数字转整数

代码的算法思想可以分为以下几步&#xff1a; 建立映射表&#xff1a; 首先&#xff0c;代码使用 HashMap 来存储罗马数字字符与其对应的整数值关系。例如&#xff0c;I 对应 1&#xff0c;V 对应 5&#xff0c;以此类推。这是为了方便后续快速查找每个罗马字符对应的整数值。 …...

东方通TongWeb替换Tomcat的踩坑记录

一、背景 由于信创需要&#xff0c;原来项目的用到的一些中间件、软件都要逐步替换为国产品牌&#xff0c;决定先从web容器入手&#xff0c;将Tomcat替换掉。在网上搜了一些资料&#xff0c;结合项目当前情况&#xff0c;考虑在金蝶AAS和东方通TongWeb里面选择&#xff0c;后又…...

ceph介绍和搭建

1 为什么要使用ceph存储 什么是对象存储&#xff1f; 对象存储并没有向文件系统那样划分为元数据区域和数据区域&#xff0c;而是按照不同的对象进行存储&#xff0c;而且每个对象内部维护着元数据和数据区域。因此每个对象都有自己独立的管理格式。 对象存储优点&#xff1a…...

树莓派安装FreeSWITCH

1、下载相关资源&#xff1a; # 假设所有资源都下载到/opt/目录下 cd /opt # 下载FreeSWITCH源码 git clone https://github.com/signalwire/freeswitch # 下载libks源码 git clone https://github.com/signalwire/libks # 下载sofia-sip源码 git clone https://github.com/fr…...

OpenSSL 生成根证书、中间证书和网站证书

OpenSSL 生成根证书、中间证书和网站证书 一、生成根证书&#xff08;ChinaRootCA&#xff09;二、生成中间 CA&#xff08;GuangDongCA&#xff09;三、生成网站证书&#xff08;gdzwfw&#xff09; 一、生成根证书&#xff08;ChinaRootCA&#xff09; 创建私钥&#xff1a; …...

MySQL核心业务大表归档过程

记录一下2年前的MySQL大表的归档&#xff0c;当时刚到公司&#xff0c;发现MySQL的业务核心库&#xff0c;超过亿条的有7张表&#xff0c;最大的表有9亿多条&#xff0c;有37张表超过5百万条&#xff0c;部分表行数如下&#xff1a; 在测试的MySQL环境 &#xff1a; pt-archiv…...

dapp获取钱包地址,及签名

npm install ethersimport {ethers} from ethers const accounts await ethereum.request({method: eth_requestAccounts}); // 获取钱包地址 this.form.address accounts[0] console.log("accounts:" this.address)const provider new ethers.BrowserProvider(…...

探索Dijkstra算法的普遍最优性:从经典算法到最新学术突破

引言 在计算机科学中&#xff0c;Dijkstra算法是解决单源最短路径问题的经典算法&#xff0c;尤其在地图导航、网络通信和机器人路径规划等领域有着广泛应用。近期&#xff0c;学术界在此算法上取得了重大突破&#xff1a;研究人员证明了Dijkstra算法的“普遍最优性”&#xff…...

‍️代码的华尔兹:在 Makefile 的指尖上舞动自动化的诗篇

文章目录 &#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️背景——一个优秀工程师必备技能&#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️一、&#x1f929;&#x1f929;快速了解…...

函数式编程Stream流(通俗易懂!!!)

目录 1.Lambda表达式 1.1 基本用法 1.2 省略规则 2.Stream流 2.1 常规操作 2.1.1 创建流 2.1.2 中间操作 filter map distinct sorted limit ​编辑skip flatMap 2.1.3 终结操作 foreach count max&min collect anyMatch allMatch noneMatch …...

数据分析:转录组差异fgsea富集分析

文章目录 介绍加载R包数据链接导入数据数据预处理DE testing: 2BP vs no-BP比较limma-voomLoad steroid dataIn No-BP patientsIn 2BP patientsCompare gene expression vs bacterial mass其他系统信息介绍 转录组差异fgsea富集分析是一种基于基因集的富集分析方法,它关注的是…...

在Django中安装、配置、使用CKEditor5,并将CKEditor5录入的文章展现出来,实现一个简单博客网站的功能

在Django中可以使用CKEditor4和CKEditor5两个版本&#xff0c;分别对应软件包django-ckeditor和django-ckeditor-5。原来使用的是CKEditor4&#xff0c;python manager.py makemigrations时总是提示CKEditor4有安全风险&#xff0c;建议升级到CKEditor5。故卸载了CKEditor4&…...

AI笔筒操作说明及应用场景

AI笔筒由来&#xff1a; 在快节奏的现代办公环境中&#xff0c;我们一直在寻找既能提升效率、增添便利&#xff0c;又能融入企业文化、展现个人品味的桌面伙伴。为此&#xff0c;我们特推出专为追求卓越、注重细节的您设计的AI笔筒礼品版&#xff0c;它集高科技与实用性于一身…...

Android自启动管控

1. 自启动管控需求来源 自启动、关联启动、交叉启动、推送启动等现象的泛滥除了对个人信息保护带来隐患外&#xff0c;还会导致占用过多的系统CPU和内存资源&#xff0c;造成系统卡顿、发热、电池消耗过快&#xff1b;还可能引入一些包含“恶意代码”的进程在后台隐蔽启动&…...

把握鸿蒙生态崛起的机遇:开发者视角的探讨

​ 大家好&#xff0c;我是程序员小羊&#xff01; 前言&#xff1a; 近年来&#xff0c;鸿蒙系统&#xff08;HarmonyOS&#xff09;的发展备受瞩目。随着其在智能手机、智能穿戴、车载系统和智能家居等领域的广泛应用&#xff0c;鸿蒙系统正逐渐形成与安卓、iOS并列的三足鼎立…...

MySQL初学之旅(1)配置与基础操作

目录 1.前言 2.正文 2.1数据库的发展历程 2.2数据库的基础操作 2.2.1启动服务 2.2.2创建与删除数据库 2.2.3数据类型 2.2.4创建表与删除表 2.3MySQL Workbench基础使用简介 3.小结 1.前言 哈喽大家好吖&#xff0c;今天博主正式开始为大家分享数据库的学习&#xff…...

一款革命性的视频剪辑工具,AI剪辑新纪元:Clapper

如果说AI视频剪辑工具哪家强&#xff1f;还真想不出有什么让人眼前一亮的AI视频剪辑应用。 毕竟随着AI技术的发展越来越快&#xff0c;各种AI应用如雨后春笋般涌现&#xff0c;然而&#xff0c;真正能够在视频剪辑领域脱颖而出的工具却寥寥无几。 今天我要介绍的 Clapper 就是…...

HTML 区块

HTML 区块 HTML&#xff08;HyperText Markup Language&#xff09;是构建网页的标准语言&#xff0c;它定义了网页的结构和内容。在HTML中&#xff0c;区块元素是指那些能够定义较大块状结构的元素&#xff0c;比如段落、标题、列表、表格和 divis 等。这些元素通常对页面的布…...

复杂度的讲解

数据结构可以简单理解为在内存中管理数据 它具有速度快 带电存储的特点&#xff08;临时存储&#xff09; 如何衡量一个算法的好坏 因此衡量一个算法的好坏&#xff0c;一般是从时间和空间两个维度来衡量的&#xff0c;即时间复杂度和空间复杂度。 时间复杂度主要衡量一个算…...

[ Linux 命令基础 2 ] Linux 命令详解-系统管理命令

&#x1f36c; 博主介绍 &#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 _PowerShell &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 &#x1f389;点赞➕评论➕收藏 养成习…...

使用docker部署Prometheus和Grafana去监控mysql和redis

自动化性能监控系统安装部署 相关工具的安装部署 服务工具分配 服务器工具端口10.0.20.9grafana300010.0.20.9prometheus909010.0.20.10mysql330610.0.20.10mysql-exporter910410.0.20.10redis330610.0.20.10redis_exporter9121 使用docker-compose安装prometheus 先拉取p…...

日志管理 | Log360 实现PCI DSS v4.0数据安全合规要求

PCI DSS 是一项网络安全标准&#xff0c;得到所有主要信用卡和支付处理公司的支持&#xff0c;旨在确保信用卡和借记卡号码的安全。最新的PCI DSS v4.0 代表支付卡行业数据安全标准。 任何依赖信用卡交易的企业都不能将数字安全视为一个偷工减料的领域&#xff0c;因为数据泄露…...

JAVA中的string和stringbuffer

【之前面试测试岗位的时候有被问到这个问题&#xff0c;面试结束后特地来学习一下】 目录 谁先被提出的String的使用StringBuffer的使用两者区别 谁先被提出的 String类先于StringBuffer被提出&#xff0c;作为Java语言的基础部分&#xff0c;而StringBuffer是为了解决实际开…...

轻型民用无人驾驶航空器安全操控------理论考试多旋翼部分笔记

官网&#xff1a;民用无人驾驶航空器综合管理平台 (caac.gov.cn) 说明&#xff1a;一是法规部分&#xff1b;二是多旋翼部分 本笔记全部来源于轻型民用无人驾驶航空器安全操控视频讲解平台 目录 官网&#xff1a;民用无人驾驶航空器综合管理平台 (caac.gov.cn) 一、轻型民用无人…...

wordpress 拼音别名/信息流广告公司一级代理

前言idea作为一个java开发的便利IDE工具&#xff0c;个人是比较喜欢的&#xff0c;今天来探索个小功能&#xff1a; 导出单个类文件为jar包&#xff01;JAR文件的全称是Java Archive File&#xff0c;意思就是Java档案文件。通常JAR文件是一种压缩文件&#xff0c;与常见的ZIP压…...

小说网站的里面的搜索是怎么做的/百度极速版下载

在本篇文章中&#xff0c;我们将介绍Visual C#对数据库的一个基本操作&#xff0c;即&#xff1a;如何往数据库中添加记录。我们将通过一些数据库操作的例子&#xff0c;来具体说明一下。为了更清楚的说明这个问题&#xff0c;在选用数据库方面采用了二种当前比较典型的数据库&…...

慈溪做网站公司哪家好/搜索排名

Maven依赖自动提示 两种方法&#xff1a;  1.快捷键自动提示 <dependency><groupId></groupId><artifactId>spring-context</artifactId><version></version></dependency>写入 spring-context依赖包后   windows CtrlAlt…...

乐搜做网站/国内新闻最新

游戏下载&#xff1a;点击下载工具下载&#xff1a;点击下载精品整合包&#xff1a;点击下载本片作者&#xff1a;披萨免责声明本公众号资料版权归属原作者或原公司所有&#xff0c;本公众号收取的费用仅是分析整理过程中产生的人工成本及其他费用。本公众号资料仅限学习研究使…...

网站空间租用费用/昆山seo网站优化软件

PPT的制作与美化已成为当下职场人必备的一项技能。在PPT制作中&#xff0c;排版往往是最为难的一个环节。可以说排版的好坏直接决定一份PPT质量的高低。今天整理了几个PPT制作超实用的小技巧&#xff0c;虽然看上去不起眼&#xff0c;但是可以提升小伙伴们的工作效率&#xff0…...

企业网站建设要注意哪方面/代写新闻稿

最后评选出了五大考研经典励志歌曲&#xff1a;: G* z* Q5 Z3 v$ 4 CNO.1&#xff1a;范玮琪 最初的梦想 183票 {4 /6 m2 ?. U NO.2: 张韶涵 隐形的翅膀 116票3 V5 A0 G, Z: a3 z7 NNO.3: 郑智化 水手 61票NO.4: 张雨生 我的未来不是梦 60票NO.5: 许美静…...