XingYun blog
  • JS基础

    • 图解js原型链
    • JS Event Loop
    • 对象的底层数据结构
    • 让你的JavaScript代码简单又高效
    • 函数参数按值传递
    • 判断数据类型
    • 浮点数精度问题和解决办法
    • 常用方法snippet
    • 实现Promise
    • 防抖和节流
    • 巧用sort排序
  • CSS && HTML

    • CSS也需要性能优化
    • class命名规范
    • em、px、rem、vh、vw 区别
    • CSS揭秘阅读笔记
  • 浏览器

    • 浏览器是如何渲染页面的
    • 重排和重绘
    • BOM浏览器对象模型
    • DOM事件
    • 浏览器存储
  • 数据结构

    • JS实现链表
    • JS实现栈与栈应用
    • JS实现常见排序
    • 哈夫曼编码
    • MD5算法
  • vue原理浅析

    • Vue虚拟dom与Diff算法
    • 前端打包文件的缓存机制
    • vue数组为什么不是响应式
    • v-for为什么不能用index做key
  • 前端工程化

    • 浏览器是如何渲染页面的
    • 前端打包需要gzip压缩吗
    • 前端打包文件的缓存机制
    • webpack loader和plugin
  • 轮子&&组件库

    • 实现水波浪进度球
  • 文字转语音mp3文件
  • 文件上传前后端实现
  • moment.js给定时间获取自然月、周的时间轴
  • 实现文件上传功能
  • 批量下载照片
  • leaflet改变坐标原点
  • 网络

    • 有了MAC地址 为什么还需要IP地址
    • 为什么IP地址老是变
    • 我们为什么需要IPV6
    • TCP与UDP
  • 计算机组成原理

    • ASCII、Unicode、UTF-8和UTF-16
  • VSCode

    • VSCode图片预览插件 Image preview
    • rsync:linux间的高效传输工具

XingYun

冲!
  • JS基础

    • 图解js原型链
    • JS Event Loop
    • 对象的底层数据结构
    • 让你的JavaScript代码简单又高效
    • 函数参数按值传递
    • 判断数据类型
    • 浮点数精度问题和解决办法
    • 常用方法snippet
    • 实现Promise
    • 防抖和节流
    • 巧用sort排序
  • CSS && HTML

    • CSS也需要性能优化
    • class命名规范
    • em、px、rem、vh、vw 区别
    • CSS揭秘阅读笔记
  • 浏览器

    • 浏览器是如何渲染页面的
    • 重排和重绘
    • BOM浏览器对象模型
    • DOM事件
    • 浏览器存储
  • 数据结构

    • JS实现链表
    • JS实现栈与栈应用
    • JS实现常见排序
    • 哈夫曼编码
    • MD5算法
  • vue原理浅析

    • Vue虚拟dom与Diff算法
    • 前端打包文件的缓存机制
    • vue数组为什么不是响应式
    • v-for为什么不能用index做key
  • 前端工程化

    • 浏览器是如何渲染页面的
    • 前端打包需要gzip压缩吗
    • 前端打包文件的缓存机制
    • webpack loader和plugin
  • 轮子&&组件库

    • 实现水波浪进度球
  • 文字转语音mp3文件
  • 文件上传前后端实现
  • moment.js给定时间获取自然月、周的时间轴
  • 实现文件上传功能
  • 批量下载照片
  • leaflet改变坐标原点
  • 网络

    • 有了MAC地址 为什么还需要IP地址
    • 为什么IP地址老是变
    • 我们为什么需要IPV6
    • TCP与UDP
  • 计算机组成原理

    • ASCII、Unicode、UTF-8和UTF-16
  • VSCode

    • VSCode图片预览插件 Image preview
    • rsync:linux间的高效传输工具
  • 有了MAC地址 为什么还需要IP地址
  • 为什么IP地址老是变
  • 我们为什么需要IPV6
  • TCP与IP协议
  • TCP与UDP
  • https与http
  • DNS域名解析
  • 进程与线程
  • SSH
  • 正向代理与反向代理
  • 程序猿必须掌握的英语单词
  • ASCII、Unicode、UTF-8和UTF-16
  • 异或门怎么连
  • 前端够用的linux命令
  • http1.1与http2
  • 与服务器保持连接的几种方式
  • base64编码
  • 关于URL
  • http请求方式
  • 图解http阅读笔记
  • 计算机
XingYun
2023-03-15
目录

网络攻击

# 1. 与前端相关

# 1.1. XSS

# 1.1.1. 定义与原理

XSS 利用的是用户对网站的信任
XSS 全称(Cross Site Scripting) 跨站脚本攻击, 是 Web 程序中最常见的漏洞。指攻击者在网页中嵌入客户端脚本(例如 JavaScript), 当用户浏览此网页时,脚本就会在用户的浏览器上执行,从而达到攻击者的目的. 比如获取用户的 Cookie,导航到恶意网站,携带木马等

存储型 XSS

注入型脚本永久存储在目标服务器上。当浏览器请求数据时,脚本从服务器上传回并执行。

反射型 XSS

当用户点击一个恶意链接,或者提交一个表单,或者进入一个恶意网站时,注入脚本进入被攻击者的网站。Web 服务器将注入脚本,比如一个错误信息,搜索结果等 返回到用户的浏览器上。由于浏览器认为这个响应来自"可信任"的服务器,所以会执行这段脚本。

基于 DOM 的 XSS

通过修改原始的客户端代码,受害者浏览器的 DOM 环境改变,导致有效载荷的执行。也就是说,页面本身并没有变化,但由于 DOM 环境被恶意修改,有客户端代码被包含进了页面,并且意外执行。

# 1.1.2. 防治措施

  1. 对输入(和 URL 参数)进行过滤,对输出进行编码
    反正就是前端不要太相信后端的数据 比如对于后端返回数据中的< 我们映射到 html 上应该是<
    同理前端最好对用户输入的<做下转义再给后端,当然这玩意后端是一定得做防 XSS 攻击的。

一般都有现成的库或者框架帮我们做这种处理。以 vue 为例

# 1.2. CSRF

# 1.2.1. 定义与原理

跨站请求伪造(英语:Cross-site request forgery),通常缩写为 CSRF 或者 XSRF。 是一种挟制用户在当前已登录的 Web 应用程序上执行非本意的操作的攻击方法

CSRF 利用的是网站对用户网页浏览器的信任

跨站请求攻击,简单地说,是攻击者通过一些技术手段欺骗用户的浏览器去访问一个自己曾经认证过的网站并运行一些操作(如发邮件,发消息,甚至财产操作如转账和购买商品)。由于浏览器曾经认证过,所以被访问的网站会认为是真正的用户操作而去运行。这利用了 web 中用户身份验证的一个漏洞:简单的身份验证只能保证请求发自某个用户的浏览器,却不能保证请求本身是用户自愿发出的。

# 1.2.2. 防治措施

添加校验 token
由于 CSRF 的本质在于攻击者欺骗用户去访问自己设置的地址,所以如果要求在访问敏感数据请求时,要求用户浏览器提供不保存在 cookie 中,并且攻击者无法伪造的数据作为校验,那么攻击者就无法再运行 CSRF 攻击。这种数据通常是窗体中的一个数据项。服务器将其生成并附加在窗体中,其内容是一个伪随机数。当客户端通过窗体提交请求时,这个伪随机数也一并提交上去以供校验。正常的访问时,客户端浏览器能够正确得到并传回这个伪随机数,而通过 CSRF 传来的欺骗性攻击中,攻击者无从事先得知这个伪随机数的值,服务端就会因为校验 token 的值为空或者错误,拒绝这个可疑请求。

# 1.3. SQL 注入

# 1.3.1. 原理

所谓 SQL 注入式攻击,就是攻击者把 SQL 命令插入到 Web 表单的输入域或页面请求的查询字符串,欺骗服务器执行恶意的 SQL 命令。 攻击者通过在应用程序预先定义好的 SQL 语句结尾加上额外的 SQL 语句元素,欺骗数据库服务器执行非授权的查询,篡改命令。

# 1.3.2. 防治措施

我们可以看出之所以能入侵是因为用户输入的 '后端代码' 起了反应,造成了相关的漏洞,所以我们只要过滤用户输入,确认输入安全性

前端对用户的输入做限制,后端对用户的输入做转义 比如利用 mysql 库提供的 escape 方法把 ' 转义成 '

const escape = mysql.escape
username = escape(username)
password = escape(password)
// 后面再执行 sql 就 ok 了
1
2
3
4

# 2. 其它攻击

# 2.1. DDoS

分布式拒绝服务攻击(英文意思是 Distributed Denial of Service,简称 DDoS) 是指 处于不同位置的多个攻击者同时向一个或数个目标发动攻击 ,或者一个攻击者控制了位于不同位置的多台机器并利用这些机器对受害者同时实施攻击。由于攻击的发出点是分布在不同地方的,这类攻击称为分布式拒绝服务攻击,其中的攻击者可以有多个。

# 2.1.1. DDoS 攻击原理

分布式拒绝服务攻击原理:分布式拒绝服务攻击 DDoS 是一种基于 DoS 的特殊形式的拒绝服务攻击,是一种分布式的、协同的大规模攻击方式。

单一的 DoS 攻击一般是采用一对一方式的,它利用网络协议和操作系统的一些缺陷,采用欺骗和伪装的策略来进行网络攻击,使网站服务器充斥大量要求回复的信息,消耗网络带宽或系统资源,导致网络或系统不胜负荷以至于瘫痪而停止提供正常的网络服务。

与 DoS 攻击由单台主机发起攻击相比较,分布式拒绝服务攻击 DDoS 是借助数百、甚至数千台被入侵后安装了攻击进程的主机同时发起的集团行为。

一个完整的 DDoS 攻击体系由攻击者、主控端、代理端和攻击目标四部分组成。

主控端和代理端分别用于控制和实际发起攻击,其中主控端只发布命令而不参与实际的攻击,代理端发出 DDoS 的实际攻击包。

对于主控端和代理端的计算机,攻击者有控制权或者部分控制权.它在攻击过程中会利用各种手段隐藏自己不被别人发现。真正的攻击者一旦将攻击的命令传送到主控端,攻击者就可以关闭或离开网络.而由主控端将命令发布到各个代理主机上。

这样攻击者可以 逃避追踪。每一个攻击代理主机都会向目标主机发送大量的服务请求数据包,这些数据包经过伪装,无法识别它的来源,而且这些数据包所请求的服务往往要消耗大量的系统资源,造成目标主机无法为用户提供正常服务。甚至导致系统崩溃。

# 2.1.2. DDoS 与 人工智能

DDoS 攻击者还利用人工智能的力量来了解哪种攻击技术最有效,并相应地引导他们的僵尸网络——用于执行 DDoS 攻击的从属机器。

人工智能正被用来增强各种形式的网络攻击。

上次更新: 2023/05/09, 15:16:34
最近更新
01
JavaScript-test
07-20
02
二维码的原理
07-20
03
利用ChatGPT优化代码
07-20
更多文章>
Theme by Vdoing | Copyright © 2021-2023 XingYun | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式