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

7 种常见的前端攻击

大家都知道,保证网站的安全是十分重要的,一旦网站被攻陷,就有可能造成用户的经济损失,隐私泄露,网站功能被破坏,或者是传播恶意病毒等重大危害。所以下面我们就来讲讲7 种常见的前端攻击。

1. 跨站脚本 (XSS)

跨站脚本攻击 (XSS) 是一种注入攻击,攻击者通过将恶意脚本注入到网页中,欺骗用户浏览器执行,从而窃取用户敏感信息或破坏网站。XSS 攻击是 Web 应用程序中最常见的安全威胁之一,也是造成重大安全事故的常见原因。

攻击方式:

  • 反射型 XSS: 攻击者将恶意脚本注入到用户提交的数据中,例如评论表单、搜索表单等。当用户提交数据时,恶意脚本会被原样反射回用户浏览器,并被执行。

  • 存储型 XSS: 攻击者将恶意脚本存储在服务器端,例如将恶意脚本注入到数据库中。当用户访问包含恶意脚本的页面时,恶意脚本会被浏览器执行。

  • DOM 型 XSS: 攻击者利用浏览器 DOM 的漏洞来执行恶意脚本。例如,攻击者可以利用 <script> 标签的 onerror 属性来执行恶意脚本。

防御措施:

  • 对用户输入进行转义和过滤: 使用 HTML 实体转义或其他安全编码方法来转义用户输入中的特殊字符,防止恶意脚本注入。

  • 使用 HTTPOnly Cookie: 将 Cookie 的 HttpOnly 属性设置为 true,可以防止 JavaScript 代码直接访问 Cookie。

  • 使用 Content Security Policy (CSP): CSP 是一种通过配置浏览器安全机制来限制网页中可执行内容的安全技术。

  • 使用前端常用框架 (如Vue,React等):这些框架模板字符一般都经过转义和过滤,具有一定的安全性 。代码示例

    <form action="/submit_comment"><input type="text" name="comment" value=""><button type="submit">提交评论</button>
    </form>

  • 上面表单中没有对用户输入的评论进行过滤,攻击者可以输入恶意JavaScript代码,例如:

    <script>alert(document.cookie); // 窃取用户Cookie
    </script>

  • 当用户提交评论时,恶意代码会被嵌入到评论中,并保存在服务器上。

  • 当其他用户访问包含恶意评论的页面时,恶意代码会被浏览器执行,从而窃取用户Cookie或造成其他伤害。

2. 依赖库风险

前端网站通常会依赖很多的第三方库和组件来实现各种功能。如果这些依赖库存在漏洞,攻击者可以利用这些漏洞来攻击网站。

攻击方式:

  • 远程代码执行 (RCE): 攻击者可以利用依赖库漏洞在受害者的浏览器或服务器上执行任意代码。

  • 跨站请求伪造 (CSRF): 攻击者可以利用依赖库漏洞伪造用户请求,诱骗用户执行非预期的操作。

防御措施:

  • 使用经过安全审计的依赖库: 选择使用经过安全审计的依赖库,可以减少依赖库漏洞的风险。

  • 定期更新依赖库: 定期更新依赖库,及时修复已知的安全漏洞。

  • 尽量减少对第三方库的依赖: 尽量减少对第三方库的依赖,自己开发代码,可以

代码示例:

// 使用存在漏洞的第三方库
const jsdom = require("jsdom"); jsdom.jsdom('<script>alert(1)</script>'); // 解析包含恶意JavaScript代码的HTML

3. 跨站请求伪造 (CSRF)

跨站请求伪造 (CSRF) 是一种安全攻击,攻击者诱骗用户在其已登录的应用程序中执行非预期的操作,例如转账、修改个人信息等。CSRF 攻击通常利用用户的信任来实施,因为用户在自己的浏览器中看到的是来自可信网站的请求,而没有意识到该请求实际上是被攻击者伪造的。

攻击方式:

  • 利用表单提或者链接跳转。攻击者会构造一个恶意表单或者链接,诱骗用户点击。当用户点击表单时,会向受害者的应用程序发送一个 POST 请求或者GET 请求,其中包含攻击者想要执行的操作。

  • 利用图片请求: 攻击者利用浏览器对图片的自动请求特性,构造一个包含恶意请求的图片。当用户浏览包含恶意图片的页面时,浏览器会自动向受害者的应用程序发送请求,其中包含攻击者想要执行的操作。

防御措施:

  • 在表单中添加 CSRF 令牌: 在表单中添加一个随机生成的 CSRF 令牌,并将其作为隐藏域提交给服务器。服务器端在验证用户请求时,会检查 CSRF 令牌的有效性。

  • 使用 HTTP Referer 头: 使用 HTTP Referer 头来检查请求来源,防止跨域请求。

  • 使用 SameSite Cookie 属性: 将 Cookie 的 SameSite 属性设置为 Strict,可以防止 CSRF 攻击。

代码示例:

<form action="/transfer"><input type="hidden" name="amount" value="1000"><input type="submit" value="转账">
</form>
  • 上面的表单中没有使用CSRF令牌,攻击者可以构造一个恶意链接,诱骗用户点击。

  • 当用户点击恶意链接时,会向转账页面发送一个POST请求,其中包含转账金额等信息。

  • 由于用户的浏览器会自动携带Cookie,攻击者可以利用Cookie来冒充用户身份,执行转账操作。

4. 点击劫持 (Clickjacking)

点击劫持 (Clickjacking) 是一种欺骗攻击,攻击者在可信赖的页面上使用透明或半透明的覆盖层来欺骗用户点击他们所看到的以外的内容,例如按钮或链接。当用户点击覆盖层时,实际上点击的是攻击者精心设计的恶意内容,例如钓鱼网站或下载恶意软件的链接。

攻击方式:

  • 利用透明层: 攻击者在可信赖的页面上使用透明层覆盖真正的链接或按钮。当用户点击页面时,实际上点击的是透明层中的恶意内容。

  • 利用iframe: 攻击者在可信赖的页面中嵌入一个iframe,iframe的内容是一个精心设计的恶意页面。当用户点击页面时,实际上点击的是iframe中的恶意内容。

  • 利用CSS定位: 攻击者利用CSS定位技术将恶意内容定位在可信赖的页面之上。当用户点击页面时,实际上点击的是恶意内容。

防御措施:

  • 使用 X-Frame-Options 头: 在服务器端设置 X-Frame-Options 头,禁止其他网站嵌入本网站的页面。

  • 使用 Content Security Policy (CSP): CSP 是一种通过配置浏览器安全机制来限制网页中可执行内容的安全技术。

  • 避免使用透明层: 尽量避免在页面中使用透明层,如果必须使用,则需要仔细测试并确保透明层不会被攻击者利用。

示例:

<div style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; opacity: 0.7;"><button style="position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);">点击我</button>
</div><a href="https://example.com/malicious_link">真正的链接</a>
  • 上述代码中,存在一个透明的覆盖层,覆盖了真正的链接。

  • 当用户点击页面时,实际上点击的是覆盖层中的按钮,而不是真正的链接。

  • 攻击者可以利用此漏洞来诱骗用户执行恶意操作,例如访问钓鱼网站或下载恶意软件。

5. 内容交付网络 (CDN) 劫持

内容交付网络 (CDN) 劫持是指攻击者劫持 CDN 节点,修改 CDN 上的库文件,在其中注入恶意代码,进而使应用程序的用户下载到这些恶意代码。CDN 劫持攻击通常利用 CDN 节点的安全漏洞或配置错误来实施。

攻击方式:

  • 利用 CDN 节点漏洞: 攻击者利用 CDN 节点的漏洞,例如 SQL 注入、远程代码执行 (RCE) 等,获取对 CDN 节点的控制权。

  • 利用 CDN 配置错误: 攻击者利用 CDN 配置错误,例如未启用 SSL/TLS 加密、未配置访问控制等,将恶意代码注入到 CDN 节点上。

防御措施:

  • 使用 HTTPS 加密: 在 CDN 节点和用户浏览器之间使用 HTTPS 加密,可以防止攻击者窃取或篡改传输数据。

  • 使用内容完整性验证 (CV): 使用 CV 技术来确保 CDN 内容的完整性,防止恶意代码被注入。

  • 定期监控 CDN 节点: 定期监控 CDN 节点的安全状况,及时发现并修复安全漏洞。

  • 选择可靠的 CDN 服务商: 选择可靠的 CDN 服务商,可以降低被攻击的风险。

6. HTTPS 降级

HTTPS 降级是指攻击者诱使用户使用不安全的 HTTP 连接访问应用程序,从而窃取用户敏感信息。HTTPS 是一种安全协议,可以对传输数据进行加密,防止攻击者窃取或篡改。然而,一些旧的浏览器或设备可能不支持 HTTPS,或者用户可能被攻击者诱骗使用不安全的 HTTP 连接。

攻击方式:

  • 利用社会工程: 攻击者通过社交工程手段,例如钓鱼网站、虚假信息等,诱骗用户点击不安全的链接。

  • 利用浏览器漏洞: 攻击者利用浏览器漏洞,将用户重定向到不安全的 HTTP 连接。

  • 利用中间人攻击: 攻击者在用户和服务器之间进行拦截,将用户连接降级为不安全的 HTTP 连接。

防御措施:

  • 强制使用 HTTPS: 在服务器端强制使用 HTTPS 连接,并禁止 HTTP 连接。

  • 使用 HSTS 头: 在服务器端设置 HSTS 头,告诉浏览器始终使用 HTTPS 连接访问该网站。

示例:

<a href="http://example.com">访问网站</a>

上面的链接使用不安全的HTTP协议,攻击者可以监听用户的网络流量,窃取用户Cookie、表单数据等敏感信息。

7. 中间人攻击

中间人攻击 (Man-in-the-Middle Attack) 是攻击者在用户和服务器之间进行拦截,窃取或篡改通信内容。中间人攻击通常利用不安全的网络连接或 Wi-Fi 热点来实施。

攻击方式:

  • 利用不安全的网络连接: 攻击者建立一个伪造的 Wi-Fi 热点,并诱骗用户连接。当用户通过伪造的 Wi-Fi 热点访问网站时,攻击者可以窃取用户发送到服务器的 Cookie、表单数据、登录凭证等敏感信息。

  • 利用 SSL/TLS 漏洞: 攻击者利用 SSL/TLS 协议的漏洞,例如心脏出血漏洞、POODLE 漏洞等,解密用户和服务器之间的通信内容。。

防御措施:

为了防御中间人攻击,开发人员可以采取以下措施:

  • 使用 HTTPS 加密: 在服务器端和用户浏览器之间使用 HTTPS 加密,可以防止攻击者窃取或篡改传输数据。

  • 使用公钥密码认证: 使用公钥密码认证可以确保通信双方身份的真实性,防止攻击者冒充服务器或用户进行攻击。

  • 安装杀毒软件和防火墙: 安装杀毒软件和防火墙可以帮助防御一些常见的中间人攻击。

相关文章:

7 种常见的前端攻击

大家都知道&#xff0c;保证网站的安全是十分重要的&#xff0c;一旦网站被攻陷&#xff0c;就有可能造成用户的经济损失&#xff0c;隐私泄露&#xff0c;网站功能被破坏&#xff0c;或者是传播恶意病毒等重大危害。所以下面我们就来讲讲7 种常见的前端攻击。 1. 跨站脚本 (X…...

element plus实现点击上传于链接上传并且回显到upload组件中

摘要&#xff1a; 今天遇到一个问题&#xff1a;vue3使用elemnt plus的上传图片时&#xff0c;数据是从别人的系统导出来的商品&#xff0c;图片是http的形式的&#xff0c;并且商品很多的&#xff0c;一个一个下载下来再上传很麻烦的&#xff0c;所以本系统插件商品时图片使用…...

ELK日志分析系统部署

ELK日志分析系统 ELK指的是ElasticsearchLogstashKibana这种架构的缩写。 ELK是一种日志分析平台&#xff0c;在很早之前我们经常使用Shell三剑客&#xff08;一般泛指grep、sed、awk&#xff09;来进行日志分析&#xff0c;这种方式虽然也可以应对多种场景&#xff0c;但是当…...

驾校小程序:一站式学车解决方案的设计与实践

​​一、引言 随着移动互联网技术的飞速发展&#xff0c;人们的生活方式和消费习惯正在发生深刻变化。驾校作为传统的服务行业&#xff0c;也面临着数字化转型的迫切需求。驾校小程序作为一种轻量级的应用&#xff0c;能够为用户提供便捷、丰富的学车服务&#xff0c;成…...

【自然语言处理】BERT模型

BERT&#xff1a;Bidirectional Encoder Representations from Transformers BERT 是 Google 于 2018 年提出的 自然语言处理&#xff08;NLP&#xff09;模型&#xff0c;它基于 Transformer 架构的 Encoder 部分。BERT 的出现极大提升了 NLP 任务的性能&#xff0c;如问答系…...

Android 添加如下飞行模式(飞行模式开和关、飞行模式开关菜单显示隐藏)接口

请添加如下飞行模式(飞行模式开关、飞行模式开关显示隐藏)接口: 飞行模式飞行模式开关com.action.airplankey: enable value:boolean true open the airplan false close the airplan关闭Intent intent = new Intent(); intent.setAction("com.action.airplan");…...

【Vue3】基于 Vue3 + ECharts 实现北京市区域地图可视化

文章目录 基于 Vue3 ECharts 实现北京市区域地图可视化1、引言2、项目初始化2.1、环境搭建2.2 、安装依赖2.3、项目结构 3、地图数据准备3.1、地图 JSON 文件获取&#xff08;具体的json数据&#xff09; 4、 组件开发4.1、Map 组件的设计思路4.2、基础结构实现4.3、核心数据结…...

【IC】什么是min period check

在 Synopsys Primetime 工具中可以检查.lib 文件中时钟输入的最小周期。想象这样一个场景&#xff0c;有一个设计 A&#xff0c;它有一个名为 clk 的时钟&#xff0c;并且该设计的 clk 周期被设定为一个值&#xff0c;比如 2 纳秒&#xff0c;即 500MHz。假设我们在进行静态时序…...

MyBatis入门之一对多关联关系(示例)

【图书介绍】《SpringSpring MVCMyBatis从零开始学&#xff08;视频教学版&#xff09;&#xff08;第3版&#xff09;》-CSDN博客 《SpringSpring MVCMyBatis从零开始学(视频教学版)&#xff08;第3版&#xff09;》(杨章伟&#xff0c;刘祥淼)【摘要 书评 试读】- 京东图书 …...

【Git 】Windows 系统下 Git 文件名大小写不敏感

背景 在 Windows 系统上&#xff0c;Git 对文件名大小写的不敏感性问题确实存在。由于 Windows 文件系统&#xff08;如 NTFS &#xff09;在默认情况下不区分文件名大小写所导致的。 原因分析 文件系统差异 Windows文件系统&#xff08;如 NTFS&#xff09;默认不区分文件名…...

【算法系列-二叉树】层序遍历

【算法系列-二叉树】层序遍历 文章目录 【算法系列-二叉树】层序遍历1. 算法分析&#x1f6f8;2. 相似题型&#x1f3af;2.1 二叉树的层序遍历II(LeetCode 107)2.2 二叉树的右视图(LeetCode 199)2.3 二叉树的层平均值(LeetCode 637)2.4 N叉树的层序遍历(LeetCode 429)2.5 在每个…...

我的世界方块改进版

引子 之前文章的磁性方块&#xff0c;通过3D打印实现&#xff0c;也批量打印了一些&#xff0c;下图就是一个小树 使用过程中&#xff0c;发现磁力感觉不紧&#xff0c;所以想改进一版。 正文 之前的结构如下&#xff1a;&#xff1a; 如果出现相邻的空隙间的磁铁相互作用&am…...

博客搭建之路:hexo增加搜索功能

文章目录 hexo增加搜索功能本地搜索弊端algolia搜索 hexo增加搜索功能 hexo版本5.0.2 npm版本6.14.7 next版本7.8.0 作为一个博客&#xff0c;没有搜索功能&#xff0c;如何在大批文章中找到自己想要的&#xff0c;那在hexo中如何增加搜索功能呢&#xff1f; search:path: sea…...

2024年最新互联网大厂精选 Java 面试真题集锦(JVM、多线程、MQ、MyBatis、MySQL、Redis、微服务、分布式、ES、设计模式)

前言 春招&#xff0c;秋招&#xff0c;社招&#xff0c;我们 Java 程序员的面试之路&#xff0c;是挺难的&#xff0c;过了 HR&#xff0c;还得被技术面&#xff0c;在去各个厂面试的时候&#xff0c;经常是通宵睡不着觉&#xff0c;头发都脱了一大把&#xff0c;还好最终侥幸…...

MybatisPlus入门(一)MybatisPlus简介

一、MyBatis简介 MyBatisPlus&#xff08;简称MP&#xff09;是基于MyBatis框架基础上开发的增强型工具&#xff0c;旨在简化开发、提高效率 - 官网&#xff1a;https://mybatis.plus/ https://mp.baomidou.com/ MyBatisPlus特性&#xff1a; - 无侵入&#xff1a;只做增强…...

QoS学习笔记

QoS业务分类 基于 DiffServ 服务模型的 QoS 业务可以分为以下几大类&#xff1a; 流分类和标记&#xff08;Traffic classification and marking&#xff09;&#xff1a;要实现差分服务&#xff0c;需要首先将数据包分为不同的类别或者设置为不同的优先级。将数据包分为不同…...

图(邻接矩阵)知识大杂烩!!(邻接矩阵结构,深搜,广搜,prim算法,kruskal算法,Dijkstra算法,拓扑排序)(学会一文让你彻底搞懂!!)

小伙伴们大家好&#xff0c;今天给大家带来图&#xff08;邻接矩阵&#xff09;的各种知识&#xff0c;让你看完此文章彻底学会邻接矩阵的相关问题。 1.邻接矩阵表示方法 1.1知识讲解 我们用一个二维数组arr来表示图。若图为有向图&#xff0c;其中arr【i】【j】w表示i号点和…...

Prometheus自定义PostgreSQL监控指标

本文我们将介绍如何在Prometheus中创建自定义PostgreSQL指标。默认情况下由postgres_export运行的查询可能不能满足用户需求&#xff0c;但我们可以创建自定义查询&#xff0c;并要求postgres_exporter公开自定义查询的结果。postgres_exporter最近被移到了Prometheus Communit…...

400行程序写一个实时操作系统(十六):操作系统中的调度策略

前言 在前面我们完成了Sparrow的临界区的代码&#xff0c;使用临界区&#xff0c;能够解决常见的并发问题&#xff0c;现在该完善我们的调度算法了。 调度算法在操作系统领域常常是热门的话题。不同的用途将会使用不同的调度策略。在本节&#xff0c;笔者将为大家介绍一些操作…...

从安灯系统看汽车零部件工厂的智能制造转型

在当今快速发展的制造业领域&#xff0c;汽车零部件工厂正面临着日益激烈的市场竞争和不断提高的客户需求。为了在竞争中脱颖而出&#xff0c;实现可持续发展&#xff0c;许多汽车零部件工厂纷纷踏上智能制造转型之路。而安灯系统作为一种重要的生产管理工具&#xff0c;在这场…...

树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频

使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...

基于Docker Compose部署Java微服务项目

一. 创建根项目 根项目&#xff08;父项目&#xff09;主要用于依赖管理 一些需要注意的点&#xff1a; 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件&#xff0c;否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...

C# SqlSugar:依赖注入与仓储模式实践

C# SqlSugar&#xff1a;依赖注入与仓储模式实践 在 C# 的应用开发中&#xff0c;数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护&#xff0c;许多开发者会选择成熟的 ORM&#xff08;对象关系映射&#xff09;框架&#xff0c;SqlSugar 就是其中备受…...

有限自动机到正规文法转换器v1.0

1 项目简介 这是一个功能强大的有限自动机&#xff08;Finite Automaton, FA&#xff09;到正规文法&#xff08;Regular Grammar&#xff09;转换器&#xff0c;它配备了一个直观且完整的图形用户界面&#xff0c;使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...

python执行测试用例,allure报乱码且未成功生成报告

allure执行测试用例时显示乱码&#xff1a;‘allure’ &#xfffd;&#xfffd;&#xfffd;&#xfffd;&#xfffd;ڲ&#xfffd;&#xfffd;&#xfffd;&#xfffd;ⲿ&#xfffd;&#xfffd;&#xfffd;Ҳ&#xfffd;&#xfffd;&#xfffd;ǿ&#xfffd;&am…...

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列&#xff0c;以便知晓哪些列包含有价值的数据&#xff0c;…...

rnn判断string中第一次出现a的下标

# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...

【Redis】笔记|第8节|大厂高并发缓存架构实战与优化

缓存架构 代码结构 代码详情 功能点&#xff1a; 多级缓存&#xff0c;先查本地缓存&#xff0c;再查Redis&#xff0c;最后才查数据库热点数据重建逻辑使用分布式锁&#xff0c;二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

手机平板能效生态设计指令EU 2023/1670标准解读

手机平板能效生态设计指令EU 2023/1670标准解读 以下是针对欧盟《手机和平板电脑生态设计法规》(EU) 2023/1670 的核心解读&#xff0c;综合法规核心要求、最新修正及企业合规要点&#xff1a; 一、法规背景与目标 生效与强制时间 发布于2023年8月31日&#xff08;OJ公报&…...