全栈必知系列之网络安全篇

2023-11-07

网络安全对前端童鞋来说大多数时候都是听其有之,闻之则无,毕竟在现如今前端如火如荼的时代,大多数东西日益成熟,开箱即用,云服务、框架等已经帮我们做了安全方面的防范,不需要我们去太过于关心前端网络安全,作为一个前端爱好者,最近温习一下这部分知识,做了个简单的总结,顺道呈现给各位看官,请注意查收。

xss攻击

Cross-Site Scripting(跨站脚本攻击)简称 XSS,是一种代码注入攻击。攻击者通过在目标网站上注入恶意脚本,使之在用户的浏览器上运行。利用这些恶意脚本,攻击者可获取用户的敏感信息如 Cookie、SessionID 等,进而危害数据安全。

根据攻击的来源,XSS 攻击可分为存储型、反射型和 DOM 型三种

1.1 存储型攻击

存储型攻击常发生在微博论坛等用户发帖、提交文章评论等地方

1.将恶意代码提交到数据库
2.数据库将其保存
3.他用户查看帖子或者评论
4.服务端返回恶意代码并被拼接到客户端页面
5.恶意代码可能通过自执行或者用户点击执行来弹出广告或者获取用户的cookie等个人隐私并上报到攻击者数据库

1.2 反射型攻击

反射型攻击主要发生在一些带有诱导性的链接的按钮邮件等

1.攻击者在一些链接的参数中加入恶意代码并诱导用户点击
2.用户通过点击将请求参数传入服务端
3.服务端获取参数并拼接返回给客户端
4.客户端执行恶意代码冒充用户进行权限操作或者盗取用户的cookie等个人隐私并上报攻击者数据库

1.3 DOM型攻击

1.攻击者构造出特殊的 URL,其中包含恶意代码。
2.用户打开带有恶意代码的 URL。
3.用户浏览器接收到响应后解析执行,前端 JavaScript 取出 URL 中的恶意代码并执行。
4.恶意代码窃取用户数据并发送到攻击者的网站,或者冒充用户的行为,调用目标网站接口执行攻击者指定的操作。

DOM型和反射性都是通过诱导用户点击链接执行,并且都是临时型的,但是反射型属于服务端安全漏洞而DOM型属于客户端安全漏洞

2.如何防范xss攻击

  • 客户端对用户输入的内容进行安全符转义,服务端对上交内容进行安全转义
  • 服务端渲染开启模板引擎自带的 HTML 转义功能。
  • 避免内联事件,尽量不要使用 onLoad=“onload(‘{{data}}’)”、onClick=“go(‘{{action}}’)” 这种拼接内联事件的写法。在 JavaScript 中通过 .addEventlistener() 事件绑定会更安全。
  • 避免拼接 HTML,前端采用拼接 HTML 的方法比较危险,如果框架允许,使用 createElement、setAttribute 之类的方法实现。或者采用比较成熟的渲染框架,如 Vue/React 等。
  • 时刻保持警惕在插入位置为 DOM 属性、链接等位置时,要打起精神,严加防范。
  • 通过 CSP、输入长度配置、接口安全措施等方法,增加攻击的难度,降低攻击的后果。
  • 主动检测和发现,可使用 XSS 攻击字符串和自动扫描工具寻找潜在的 XSS 漏洞。
  • 尽量避免三方跨域提交内容到服务端
  • HTTP-only Cookie: 禁止 JavaScript 读取某些敏感 Cookie,攻击者完成 XSS 注入后也无法窃取此 Cookie。
  • 验证码:防止脚本冒充用户提交危险操作。

CSRF攻击

CSRF(Cross-site request forgery)跨站请求伪造:攻击者诱导受害者进入第三方网站,在第三方网站中,向被攻击网站发送跨站请求。利用受害者在被攻击网站已经获取的注册凭证,绕过后台的用户验证,达到冒充用户对被攻击的网站执行某项操作的目的。

1.1 主动型攻击

1.受害者访问a.com并在自己浏览器留下a.com的登录态
2.攻击者诱导受害者访问三方网站b.com
3.三方网站b.com植有访问a.com接口的恶意代码(删除/增加/修改等)
4.受害者点击b.com时候,b.com带着a.com的登陆凭证冒充受害用户执行对a.com的恶意操作

1.2 被动型攻击

1.攻击者在a.com发布带有恶意链接的帖子或者评论(提交对a.com带有增删改的诱导型img/form/a标签)
2.当其他拥有登录态的受害者点击该评论的恶意链接冒用受害者登录凭证发起攻击

CSRF主要是冒用受害者登录凭证发起恶意的增删改并不会窃取受害者隐私信息

2.如何预防CSRF攻击

1. 禁止三方网站获取cookie,比如设置Chrome的SameSite属性

弊端:SameSite试用阶段,兼容性不是很理想

2. 服务端通过Referer Header 和 Origin Header来进行同源验证

弊端1:攻击者可以部分修改或者隐藏referer

<img src="http://bank.example/withdraw?amount=10000&for=hacker" referrerpolicy="no-referrer">

弊端2: 某些浏览器或者操作会丢失origin头部,比如302重定向

弊端3:HTTPS页面跳转到HTTP页面,所有浏览器Referer都丢失。

弊端4:对于被动性攻击并不能识别

其他: 某些低版本浏览器对origin和referer并不是很稳定,各种意想不到的结果,极其不稳定

3. 利用token来鉴别,三方跨站请求并不能获取到头部的token,本站的接口在请求前都会在请求头增加token用于身份鉴权,三方请求并不会携带token

弊端1:token鉴权对服务端压力较大,许专门开辟服务器用于token鉴权,耗费服务器成本并且增加请求时间

弊端2:对于页面ajax,fetch等异步请求外的其他请求如form提交,a链接等需要去挨个加token,不能形成统一的token增加入口,存在部分疏漏

相对而言token鉴权算是比较好的一种防护措施

4. 利用双重cookie来认证,在每个请求的参数都附加scrfCookie='随机数'防御参数,并在cookie中混入该防御参数值,服务端将请求头部的cookie中防御cookie参数和请求参数所带的该参数进行比对

弊端: 前后分离的代码,后端接口和前端可能不同源,比如前端www.xx.com,后端接口为api.xx.com,前端要拿到后端接口域下的cookie必须将cookie都放在xx.com下面才能保证所有子域都可以拿到,这样反而增加xss攻击风险得不偿失

DOS攻击

DOS攻击通过在网站的各个环节进行攻击,使得整个流程跑不起来,以达到瘫痪服务为目的。最常见的就是发送大量请求导致服务器过载宕机

1. 防范措施

  • 扩容服务器【有钱公司玩的】
  • 进行实时监控,封禁某些恶意密集型请求IP段
  • 增加接口验证,对于某些敏感接口,进行单个IP访问次数限制
  • 进行静态资源缓存,隔离源文件的访问,比如CDN加速

HTTP劫持

1. DNS劫持

DNS劫持又称域名劫持,是指在劫持的网络范围内拦截域名解析的请求,分析请求的域名,把审查范围以外的请求放行,否则返回假的IP地址或者什么都不做使请求失去响应,其效果就是对特定的网络不能访问或访问的是假网址。其实本质就是对DNS解析服务器做手脚,或者是使用伪造的DNS解析服务器

解决办法

DNS的劫持过程是通过攻击运营商的解析服务器来达到目的。我们可以不用运营商的DNS解析而使用自己的解析服务器或者是提前在自己的App中将解析好的域名以IP的形式发出去就可以绕过运营商DNS解析,这样一来也避免了DNS劫持的问题。

2.内容劫持

内容劫持网上很少有提到,这也是在做httpDNS SDK所遇到的一个问题,其实内容劫持一开始的出发点是好的,是运营商为了加快用户的访问速度同时减少自己的流量损耗而做的一个缓存机制,用户在像服务器请求数据的时候运营商会把用户的请求转移到这个缓存池中,如果缓存中有就直接返回,没有的话再去像服务器请求然后拦截并缓存服务端给用户的回调数据,这样一来可以极大的降低运营商像服务器请求的次数,也能加快用户的访问,所以出发点是好,但是一些非法的商家对缓存池内部做一次些处理就是直接对返回的内容进行修改,这样一来我们就会接受到错误的数据

其实如何选择网络安全学习方向,如何进行实战与理论的结合并不难,找准正确方式很重要。

接下来我将从成长路线开始一步步带大家揭开网安的神秘面纱。

1.成长路线图

共可以分为:

一、基础阶段

二、渗透阶段

三、安全管理

四、提升阶段

在这里插入图片描述

同时每个成长路线对应的板块都有配套的视频提供:
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

视频配套资料&国内外网安书籍、文档

当然除了有配套的视频,同时也为大家整理了各种文档和书籍资料
SRC技术文档汇总
在这里插入图片描述
绿盟护网行动
在这里插入图片描述
网络安全源码合集+工具包
在这里插入图片描述

网络安全面试题

最后就是大家最关心的网络安全面试题板块
在这里插入图片描述
在这里插入图片描述
所有资料共87.9G,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,可以扫描下方CSDN官方合作二维码免费领取(如遇扫码问题,可以在评论区留言领取哦)~

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

全栈必知系列之网络安全篇 的相关文章

  • 【计算机毕业设计】宝鸡文理学院学生成绩动态追踪系统

    研究开发宝鸡文理学院学生成绩动态追踪系统的目的是让使用者可以更方便的将人 设备和场景更立体的连接在一起 能让用户以更科幻的方式使用产品 体验高科技时代带给人们的方便 同时也能让用户体会到与以往常规产品不同的体验风格 与安卓 iOS相比较起来
  • 探索Web开发的未来——使用KendoReact服务器组件

    Kendo UI 是带有jQuery Angular React和Vue库的JavaScript UI组件的最终集合 无论选择哪种JavaScript框架 都可以快速构建高性能响应式Web应用程序 通过可自定义的UI组件 Kendo UI可
  • 【gee】下载modis土地利用类型

    var china ee FeatureCollection projects assets china boundary var lc dataset ee ImageCollection MODIS 061 MCD12Q1 filter
  • 低代码配置-组件列表设计

    过滤字段功能 配置了api 启用 输出配置 filter type Array default gt
  • 低代码-详情页组件设计

    效果图 详情页数据结构定义 layout 按钮数据 buttonLayout headButton 页头按钮 footButton 页脚按钮 详情页表单配置 config 配置组件列表 detailLayout 默认行为 进表单初始化 只展
  • 【计算机毕业设计】OA公文发文管理系统_xtv98

    近年来 人们的生活方式以网络为主题不断进化 OA公文发文管理就是其中的一部分 现在 无论是大型的还是小型的网站 都随处可见 不知不觉中已经成为我们生活中不可或缺的存在 随着社会的发展 除了对系统的需求外 我们还要促进经济发展 提高工作效率
  • 新手也能看懂的【前端自动化测试入门】!

    前言 最近在网上搜索前端自动化测试相关的文档 但是发现网上的文章都是偏使用 没有把一些基础概念说清楚 导致后续一口气遇到一些 karma Jasmine jest Mocha Chai BDD 等词汇的时候很容易一头雾水 这次一方面整理一下
  • 面试官问,如何在十亿级别用户中检查用户名是否存在?

    面试官问 如何在十亿级别用户中检查用户名是否存在 前言 不知道大家有没有留意过 在使用一些app注册的时候 提示你用户名已经被占用了 需要更换一个 这是如何实现的呢 你可能想这不是很简单吗 去数据库里查一下有没有不就行了吗 那么假如用户数量
  • 你的服务器还安全吗?用户数据是否面临泄露风险?

    一系列严重的网络安全事件引起了广泛关注 多家知名公司的服务器遭到黑客挟持 用户的个人数据和敏感信息面临泄露的风险 这些事件揭示了网络安全的脆弱性和黑客攻击的威胁性 提醒着企业和个人加强对网络安全的重视 一 入侵案例 1 1 蔚来数据泄露 1
  • 内网安全:隧道技术详解

    目录 隧道技术 反向连接技术 反向连接实验所用网络拓扑图及说明 网络说明 防火墙限制说明 实验前提说明 实战一 CS反向连接上线 拿下Win2008 一 使用转发代理上线创建监听器 二 上传后门执行上线 隧道技术 SMB协议 SMB协议介绍
  • 【网络安全】——区块链安全和共识机制

    区块链安全和共识机制 摘要 区块链技术作为一种分布式去中心化的技术 在无需第三方的情况下 使得未建立信任的交易双方可以达成交易 因此 区块链技术近年来也在金融 医疗 能源等多个行业得到了快速发展 然而 区块链为无信任的网络提供保障的同时 也
  • 静态综合实验

    1 IP地址划分 192 168 1 0 27 用于主干拆分 192 168 1 32 27 用于用户拆分 192 168 1 64 27 用于用户拆分 192 168 1 96 27 用于用户拆分 192 168 1 128 27 用于用
  • 网络安全(黑客)自学启蒙

    一 什么是网络安全 网络安全是一种综合性的概念 涵盖了保护计算机系统 网络基础设施和数据免受未经授权的访问 攻击 损害或盗窃的一系列措施和技术 经常听到的 红队 渗透测试 等就是研究攻击技术 而 蓝队 安全运营 安全运维 则研究防御技术 作
  • 温室气体排放更敏感的模型(即更高的平衡气候敏感性(ECS))在数年到数十年时间尺度上也具有更高的温度变化(Python代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Python代码 数据
  • 考虑光伏出力利用率的电动汽车充电站能量调度策略研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码 数据
  • 【安全】原型链污染 - Hackit2018

    目录 准备工作 解题 代码审计 Payload 准备工作 将这道题所需依赖模块都安装好后 运行一下 然后可以试着访问一下 报错是因为里面没内容而已 不影响 准备工作就做好了 解题 代码审计 const express require exp
  • 【安全】简单解析统一身份认证:介绍、原理和实现方法

    深入解析统一身份认证 介绍 原理和实现方法 导语 统一身份认证是什么 统一身份认证的原理 统一身份认证的实现 结语 导语 随着互联网的发展和各种在线服务的普及 用户在不同的应用和平台上需要进行多次身份验证 为了简化用户的登录和减少重复操作
  • 【安全】Java幂等性校验解决重复点击(6种实现方式)

    目录 一 简介 1 1 什么是幂等 1 2 为什么需要幂等性 1 3 接口超时 应该如何处理 1 4 幂等性对系统的影响 二 Restful API 接口的幂等性 三 实现方式 3 1 数据库层面 主键 唯一索引冲突 3 2 数据库层面 乐
  • 深入解析 YAML 配置文件:从语法到最佳实践

    一 认识YAML YAML YAML Ain t Markup Language 是一种人类可读的数据序列化语言 它的设计目标是使数据在不同编程语言之间交换和共享变得简单 YAML采用了一种简洁 直观的语法 以易于阅读和编写的方式表示数据结
  • 【前端】canvas图片加文字

    注释标记了操作步骤 import React Component createRef from react class CertifyImgRender extends Component bgRef createRef

随机推荐

  • Windows Server 2012 R2 -webDAV管理(VMware workstation环境)

    安装URL及webDAV组件 启动设置webDAV 身份验证 客户端设置 连接测试
  • DNS缓存病毒防护43.227.220

    DNS缓存病毒又称DNS欺骗 是一种通过查找并利用DNS系统中存在的漏洞 将流量从合法服务器引导至虚假服务器上的攻击方式 在实际的DNS解析过程中 用户请求某个网站 浏览器首先会查找本机中的DNS缓存 如果DNS缓存中记录了该网站和IP的映
  • Onetab快速删除所有历史网页

    1 打开网页的控制台 F12 2 控制台粘贴该命令 document querySelectorAll div deleteAllButton forEach function ele index list ele click 3 然后按住
  • 我的CSDN三周年创作纪念日

    机缘 和老王研究读取和处理FY 4A AGRI数据 研究怎么生成经纬度查找图像 怎么处理 后来有了结果 就想着要不发到CSDN上 分享给大家 也能收获几个粉丝 收获 这个过程更多的是一种收获感和幸福感吧 收获了18w 的阅读和400多个粉丝
  • Java设计模式-单例模式

    JAVA设计模式课堂整理 代码都是maven引入junit包 pom文件
  • C++57个入门知识点_57 异常处理(为了程序健壮性,使用try{}catch(){}将代码包裹,出现异常时可以被程序接到,而不会造成程序阻塞或崩溃;需要在VS中打开设置;exception类)

    本篇作为C 基础知识的最后一篇 介绍如何进行代码中的异常处理 我们在写代码的过程中 不得不考虑一些突发的情况 比如说申请内存时内存不够用了 做除法时除数为0 这些都是在运行的时候才会出现的 这时候就需要考虑在运行时出现这些情况应该怎么处理
  • Spring AOP +自定义注解 + Spel表达式 实现审计日志

    1 简介 审计日记就是记录用户的操作记录 基于AOP动态代理 实现自定义审计日志注解 并支持Spel表达式解析 2 实现 2 1 日志存储实体类 Data Builder ToString public class AuditingLog
  • Elasticsearch架构原理

    架构原理 本书作为 Elastic Stack 指南 关注于 Elasticsearch 在日志和数据分析场景的应用 并不打算对底层的 Lucene 原理或者 Java 编程做详细的介绍 但是 Elasticsearch 层面上的一些架构设
  • JS对象其中两个Math对象和日期对象

    JavaScript对象 一 Math对象 1 Math对象的使用 Math对象用来对数字进行与数字相关的计算 该对象 不是构造函数 不需要实例化对象 可以直接使用其静态属性和静态方法 Math对象的常用属性和方法 成员 作用 PI 获取圆
  • Geant4程序的一点技巧总结 2

    4 关于获得粒子状态 获得粒子的总能量 G4Track pTrack pStep gt GetTrack const G4DynamicParticle pParticle pTrack gt GetDynamicParticle pPar
  • 7.设备驱动开发的基本函数

    7 1 I O口函数 无论驱动程序多么复杂 归根结底 无非还是向某个端口或者某个寄存器位赋值 这个值只能是0或1 接收值的就是I O口 与中断和内存不同 使用一个没有 申请的I O端口不会使处理器产生异常 也就不会导致诸如 segmenta
  • Qt4.8升级Qt5.9版本问题总结

    最好先在 pro文件中加上 greaterThan QT MAJOR VERSION 4 QT widgets建议最好和源码对比看着升级 有些问题不看源码 报出来的问题会误导我们 1 106 error class QString has
  • 【pyq文案】可可爱爱、脑回路清奇の朋友圈文案

    1 人每一个身体器官都是无价之宝 全部加起来1个月3000 2 别人出门 辣妹风 复古风 学院风 我出门 打工的勤劳小蜜蜂 3 看见自己就烦 50出 和今天星期四没关系 4 上学时拿钱混日子 上班后拿日子混钱 一辈子都在混 真有我的 5 上
  • 金融时间序列分析:5. AR模型实例(Python)

    0 目录 金融时间序列分析 9 ARMA自回归移动平均模型 金融时间序列分析 8 MA模型实例 Python 金融时间序列分析 7 MA滑动平均模型 金融时间序列分析 6 AR模型实例 金融时间序列分析 5 AR模型实例 Python 金融
  • C++基本设计模式01

    C 基本设计模式01 1 简单工厂模式 不直接在客户端创建类对象 利用工厂类的方法CreateObject来创建 优点 1 客户端和具体类解耦 即分开来 2 不需要担心对象创建的复杂程度 缺点 1 增加新功能通过改变源代码 不符合开闭原则
  • TCP协议详细总结

    计网分层结构 考虑最简单的情况 两台主机之间的通信 这个时候只需要一条网线把两者连起来 规定好彼此的硬件接口 如都用USB 电压10v 频率2 4GHz等 这一层就是物理层 这些规定就是物理层协议 我们当然不满足于只有两台电脑连接 因此我们
  • 数字化转型的五项关键驱动力

    在人工智能进入各个行业领域掀起涟漪的时代 企业更需要积极变革 每年几次的Forrester数字化转型高峰论坛会将全球数字高管和Forrester分析师汇聚一堂 一起探讨数字化演进的现状 我很有幸被邀请作为嘉宾 参与了五月初在芝加哥举行的活动
  • PSO最佳适应度收敛曲线

    第一层模型 确定每项作业的运输路线 和运输线路上每个节点的代理人和运输方式 每项作业根据时间 始终点约束构建节点 运输方式虚拟网络图 根据最短路径原则形成运输路线和运输方式选择的初始方案 PSO 根据节点间价格折扣不同和代理人运输能力不同进
  • Python中经常会出现ModuleNotFoundError错误,这是导入模块时未正确安装或路径错误所致

    Python中经常会出现ModuleNotFoundError错误 这是导入模块时未正确安装或路径错误所致 这个错误的解决方案有很多种 本篇文章将为大家提供一种解决 No module named torch six 错误的方法 当你运行P
  • 全栈必知系列之网络安全篇

    网络安全对前端童鞋来说大多数时候都是听其有之 闻之则无 毕竟在现如今前端如火如荼的时代 大多数东西日益成熟 开箱即用 云服务 框架等已经帮我们做了安全方面的防范 不需要我们去太过于关心前端网络安全 作为一个前端爱好者 最近温习一下这部分知识