浏览器安全问题

1. XSS攻击

概念

XSS 攻击指的是跨站脚本攻击,是一种代码注入攻击。攻击者通过在网站注入恶意脚本,使之在用户的浏览器上运行,从而盗取用户的信息如 cookie 等
XSS本质是因为网站没有对恶意代码进行过滤,与正常代码混合在一起了,浏览器没发区分那些脚步是否可信,从而导致恶意代码的执行。

攻击者可以通过这种攻击方式进行以下操作:

  1. 获取页面的数据,如DOM、cookie、localstorage;
  2. DOS攻击,发送合理请求,暂用服务器资源,从而使用户无法访问服务器;
  3. 破坏页面结构
  4. 流量劫持(将链接指向某个网站)
攻击类型

xss攻击可以分为存储型、反射型和DOM型

  1. 存储型指的是恶意脚本会存储在目标服务器上,当浏览器请求数据时,脚本从服务器传回并执行
  2. 反射型指的是攻击者诱导用户访问一个恶意代码URL后,服务器端接收数据处理,然后把恶意代码的数据发送到浏览器端,浏览器端解析这段带有XSS代码的数据后当脚本执行,最终完成xss攻击;
  3. DOM型指的通过修改页面的DOM节点行程xss;
存储型 XSS 的攻击步骤:
  1. 攻击者将恶意的代码提交到目标网站的数据中;
  2. 用户打开目标网站时,⽹站服务端将恶意代码从数据库取出,拼接在 HTML 中返回给浏览器
  3. ⽹站服务端将恶意代码从数据库取出,拼接在 HTML 中返回给浏览器
  4. 恶意代码窃取⽤户数据并发送到攻击者的⽹站,或者冒充⽤户的⾏为,调⽤⽬标⽹站接⼝执⾏攻击者指定的操作。

这种攻击常⻅于带有⽤户保存数据的⽹站功能,如论坛发帖、商品评论、⽤户私信等

反射型 XSS 的攻击步骤:
  1. 攻击者构造出特殊的 URL,其中包含恶意代码;
  2. ⽤户打开带有恶意代码的 URL 时,⽹站服务端将恶意代码从 URL 中取出,拼接在 HTML 中返回给浏览器;
  3. 用户浏览器接收到响应后解析执⾏,混在其中的恶意代码也被执⾏;
  4. 恶意代码窃取⽤户数据并发送到攻击者的⽹站,或者冒充⽤户的⾏为,调⽤⽬标⽹站接⼝执⾏攻击者指定的操作;

反射型 XSS 跟存储型 XSS 的区别是:存储型 XSS 的恶意代码存在数据库⾥,反射型 XSS 的恶意代码存在 URL ⾥。
反射型 XSS 漏洞常⻅于通过 URL 传递参数的功能,如⽹站搜索、跳转等。 由于需要⽤户主动打开恶意的 URL 才能⽣效,攻击者往往会结合多种⼿段诱导⽤户点击。

DOM 型 XSS 的攻击步骤:
  1. 攻击者构造出特殊的 URL,其中包含恶意代码;
  2. ⽤户打开带有恶意代码的 URL;
  3. ⽤户浏览器接收到响应后解析执⾏,前端 JavaScript 取出 URL 中的恶意代码并执⾏;
  4. 恶意代码窃取⽤户数据并发送到攻击者的⽹站,或者冒充⽤户的⾏为,调⽤⽬标⽹站接⼝执⾏攻击者指定的操作;

DOM 型 XSS 跟前两种 XSS 的区别:DOM 型 XSS 攻击中,取出和执⾏恶意代码由浏览器端完成,属于前端JavaScript ⾃身的安全漏洞,⽽其他两种 XSS 都属于服务端的安全漏洞。

如何防御XSS攻击

  1. 输入验证和清理‌:确保对用户输入的数据进行合法性验证和转义处理。
  2. 实施内容安全策略(CSP)‌:限制加载的资源和脚本。
CSP概念
  1. CSP 指的是内容安全策略,它的本质是建立一个白名单,告诉浏览器哪些外部资源可以加载和执行。我们只需要配置规则,如何拦截由浏览器自己来实现。
  2. 通常有两种方式来开启 CSP,一种是设置 HTTP 首部中的 Content-Security-Policy,一种是设置 meta 标签的方式

对一些敏感信息进行保护,比如 cookie 使用 http-only,使得脚本无法获取。也可以使用验证码,避免脚本伪装成用户执行一些操作。

2. CSRF攻击

CSRF 攻击指的是跨站请求伪造攻击,攻击者诱导用户进入一个第三方网站,然后该网站向被攻击网站发送跨站请求。如果用户在被攻击网站中保存了登录状态,那么攻击者就可以利用这个登录状态,绕过后台的用户验证,冒充用户向服务器执行一些操作。

CSRF 攻击的本质是利用 cookie 会在同源请求中携带发送给服务器的特点,以此来实现用户的冒充。

攻击类型

  1. GET类型的CSRF攻击,比如在网站中一个img标签里构建一个请求,当用户打开这个网站的时候就会自动发起提交;
  2. POST类型的CSRF攻击,比如构建一个表单,然后隐藏它,当用户进入页面,自动提交这个表单;
  3. 链接类型的CSRF攻击,比如在a标签的href属性构造一个请求,然后诱导用户去点击

如何防御CSRF攻击

  1. 进行同源检测:服务器根据 http 请求头中 origin 或者 referer 信息来判断请求是否为允许访问的站点,从而对请求进行过滤。
  2. ‌使用CSRF令牌‌:在每个请求中包含一个唯一的令牌,服务器验证该令牌的有效性;
  3. 设置HTTP头部‌:如X-Frame-Options、X-Content-Type-Options等,增强浏览器的安全策略‌;

3. SQL注入

SQL注入是一种通过操纵数据库查询来获取未经授权的数据库访问的攻击方式。攻击者可以通过前端输入插入恶意代码,如果后端没有进行适当的验证和处理,可能会导致敏感数据被窃取或破坏

如何防御SQL注入

  1. 输入验证:确保前端输入字段经过正确验证和处理
  2. 后端验证:后端不要信任前端输入的数据,进行二次验证
  3. 使用安全检测工具;如Burp Scanener、sqlmap等工具来检测潜在的SQL注入漏洞

4.中间人攻击

中间人攻击是指攻击者与通讯的两端分别创建独立的联系,并交换其所收到的数据,使通讯的两端认为他们正在通过一个私密的连接与对方直接对话,但实际上整个会话都被攻击者完全控制,在中间人攻击中,攻击者可以拦截通讯双方的通话并插入新的内容

攻击过程

  1. 客户端发送请求到服务端,请求被中间人拦截;
  2. 服务端向客户端发送公钥;
  3. 中间人截获公钥,保留在自己手上,然后自己生成一个伪造的公钥,发送给客户端;
  4. 客户端接收到伪造的公钥后,生成加密hash值发给服务器;
  5. 中间人获得加密hash值,用自己的私钥解密获得真密钥,同时生成假的hash值,发送服务器;
  6. 服务器用私钥解密获得假密钥,然后加密数据传输给客户端;

如何防御中间人攻击

  1. 加密通信:使用加密技术可以有效地防止中间人攻击。在传输数据时使用加密算法,确保数据在传输过程中不被窃听或篡改;
  2. 身份验证:在进行任何通信之前,要求用户进行身份验证,列如使用电子邮件地址或密码进行验证。这可以增加攻击者的难度,因为攻击者需要设法绕过身份验证过程;
  3. 限制访问:限制对敏感数据的访问,可以防止未经授权人的访问数据。列如,在服务器上设置访问的控制列表,只允许授权用户可以访问敏感数据;
  4. 监控系统:安装监控系统并定期监视网络流量,可以发现中间人攻击并采取适当的措施。这可以帮助及时采取行动,防止攻击者篡改通信内容;

5. 网络劫持

网络劫持分为两种

DNS劫持

输入京东被强制跳转淘宝这属于dns劫持

  1. DNS强制解析:通过修改运营商的本地DNS记录,来引导用户流量缓存到服务器
  2. 302的跳转方式:通过监控网络出口的流量,分析判断那些内容是可以进行劫持的,在对劫持内容发起302跳转的回复,引导用户获取内容

HTTP劫持

访问谷歌但是一直有其它的游戏广告弹出,由于http明文传输,运营商会修改你的http响应内容(即加广告)

DNS劫持由于涉嫌违法,已经被监管起来,现在很少有DNS劫持,而http劫持依然非常盛行,最有效的办法就是全站HTTPS,将HTTP加密这使得运营商无法获取明文,就无法劫持你的响应内容;

6. 那些可能引起前端安全问题

  1. 跨站脚本攻击(xss):一种代码注入方式,为了与css区分所以被称作xss,早期常⻅于⽹络论坛, 起因是⽹站没有对⽤户的输⼊进⾏严格的限制, 使得攻击者可以将脚本上传到帖⼦让其他⼈浏览到有恶意脚本的⻚⾯, 其注⼊⽅式很简单包括但不限于JavaScript / CSS / Flash 等;
  2. iframe的滥用:iframe中的内容是由第三⽅来提供的,默认情况下他们不受控制,他们可以在iframe中运⾏JavaScirpt脚本、Flash插件、弹出对话框等等,这可能会破坏前端⽤户体验;
  3. 跨站点请求伪造(csrf):指攻击者通过设置好的陷阱,强制对已完成认证的⽤户进⾏⾮预期的个⼈信息或设定信息等某些状态更新,属于被动攻击;
  4. 恶意第三⽅库: ⽆论是后端服务器应⽤还是前端应⽤开发,绝⼤多数时候都是在借助开发框架和各种类库进⾏快速开发,⼀旦第三⽅库被植⼊恶意代码很容易引起安全问题;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/897470.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring(五)容器-依赖注入的三种方式

目录 总结:通用的三种注入方式 1 字段注入 2 构造器注入 3 set注入 总结:通用的三种注入方式 优先使用构造器注入谨慎使用 Setter 注入避免滥用字段注入 通过构造器传入依赖,确保对象创建时即完成初始化。通过 Setter 方法注入依赖&#x…

Python贝壳网二手小区数据爬取(2025年3月更)

文章目录 一、代码整体架构解析二、各部分代码详解1. main()主函数解析2. 会话初始化(伪装浏览器身份)3. 动态参数生成(反爬虫核心机制)4. 列表页抓取(获取小区列表)5. 列表页解析(提取小区信息…

使用服务器搭建一个专属的密码管理工具Vaultwarden

一、服务器配置与Docker环境 ‌实例选型与系统准备‌ ‌推荐配置‌:‌1核2GB内存‌(莱卡云L1型实例),Vaultwarden资源占用低,适合轻量级部署‌34。‌操作系统‌:选择 ‌Ubuntu 22.04 LTS‌,兼容…

安孚科技携手政府产业基金、高能时代发力固态电池,开辟南孚电池发展新赛道

安孚科技出手,发力固态电池。 3月7日晚间,安孚科技(603031.SH)发布公告称,公司控股子公司南孚电池拟与南平市绿色产业投资基金有限公司(下称“南平绿色产业基金”)、高能时代(广东横…

IO学习---->线程

1.创建两个线程&#xff0c;分支线程1拷贝文件的前一部分&#xff0c;分支线程2拷贝文件的后一部分 #include <head.h> sem_t sem; long half_size 0; // 全局变量&#xff0c;供所有线程共享void* product(void *arg) {FILE *src fopen("IO.text", "…

深度学习分词器char-level实战详解

一、三种分词器基本介绍 word-level&#xff1a;将文本按照空格或者标点分割成单词&#xff0c;但是词典大小太大 subword-level&#xff1a;词根分词&#xff08;主流&#xff09; char-level&#xff1a;将文本按照字母级别分割成token 二、charlevel代码 导包&#xff1…

基于SpringBoot实现旅游酒店平台功能六

一、前言介绍&#xff1a; 1.1 项目摘要 随着社会的快速发展和人民生活水平的不断提高&#xff0c;旅游已经成为人们休闲娱乐的重要方式之一。人们越来越注重生活的品质和精神文化的追求&#xff0c;旅游需求呈现出爆发式增长。这种增长不仅体现在旅游人数的增加上&#xff0…

git规范提交之commitizen conventional-changelog-cli 安装

一、引言 使用规范的提交信息可以让项目更加模块化、易于维护和理解&#xff0c;同时也便于自动化工具&#xff08;如发布工具或 Changelog 生成器&#xff09;解析和处理提交记录。 通过编写符合规范的提交消息&#xff0c;可以让团队和协作者更好地理解项目的变更历史和版本…

前端实现版本更新自动检测✅

&#x1f916; 作者简介&#xff1a;水煮白菜王&#xff0c;一位资深前端劝退师 &#x1f47b; &#x1f440; 文章专栏&#xff1a; 前端专栏 &#xff0c;记录一下平时在博客写作中&#xff0c;总结出的一些开发技巧和知识归纳总结✍。 感谢支持&#x1f495;&#x1f495;&a…

硬件基础(4):(5)设置ADC电压采集中MCU的参考电压

Vref 引脚通常是 MCU (特别是带有 ADC 的微控制器) 上用来提供或接收基准电压的引脚&#xff0c;ADC 会以该基准电压作为量程参考对输入模拟信号进行数字化转换。具体来说&#xff1a; 命名方式 在不同厂家的 MCU 中&#xff0c;Vref 引脚可能会被标记为 VREF / VREF- / VREF_…

postman接口请求中的 Raw是什么

前言 在现代的网络开发中&#xff0c;API 的使用已经成为数据交换的核心方式之一。然而&#xff0c;在与 API 打交道时&#xff0c;关于如何发送请求体&#xff08;body&#xff09;内容类型的问题常常困扰着开发者们&#xff0c;尤其是“raw”和“json”这两个术语之间的区别…

为什么要使用前缀索引,以及建立前缀索引:sql示例

背景&#xff1a; 你想啊&#xff0c;数据库里有些字段&#xff0c;它老长了&#xff0c;就像那种 varchar(255) 的字段&#xff0c;这玩意儿要是整个字段都拿来建索引&#xff0c;那可太占地方了。打个比方&#xff0c;这就好比你要在一个超级大的笔记本上记东西&#xff0c;每…

【语料数据爬虫】Python爬虫|批量采集会议纪要数据(1)

前言 本文是该专栏的第2篇,后面会持续分享Python爬虫采集各种语料数据的的干货知识,值得关注。 在本文中,笔者将主要来介绍基于Python,来实现批量采集“会议纪要”数据。同时,本文也是采集“会议纪要”数据系列的第1篇。 采集相关数据的具体细节部分以及详细思路逻辑,笔…

Android 线程池实战指南:高效管理多线程任务

在 Android 开发中&#xff0c;线程池的使用非常重要&#xff0c;尤其是在需要处理大量异步任务时。线程池可以有效地管理线程资源&#xff0c;避免频繁创建和销毁线程带来的性能开销。以下是线程池的使用方法和最佳实践。 1. 线程池的基本使用 &#xff08;1&#xff09;创建线…

SQL29 计算用户的平均次日留存率

SQL29 计算用户的平均次日留存率 计算用户的平均次日留存率_牛客题霸_牛客网 题目&#xff1a;现在运营想要查看用户在某天刷题后第二天还会再来刷题的留存率。 示例&#xff1a;question_practice_detail -- 输入&#xff1a; DROP TABLE IF EXISTS question_practice_detai…

深度学习分类回归(衣帽数据集)

一、步骤 1 加载数据集fashion_minst 2 搭建class NeuralNetwork模型 3 设置损失函数&#xff0c;优化器 4 编写评估函数 5 编写训练函数 6 开始训练 7 绘制损失&#xff0c;准确率曲线 二、代码 导包&#xff0c;打印版本号&#xff1a; import matplotlib as mpl im…

【leetcode hot 100 19】删除链表的第N个节点

解法一&#xff1a;将ListNode放入ArrayList中&#xff0c;要删除的元素为num list.size()-n。如果num 0则将头节点删除&#xff1b;否则利用num-1个元素的next删除第num个元素。 /*** Definition for singly-linked list.* public class ListNode {* int val;* Lis…

【iOS逆向与安全】sms短信转发插件与上传服务器开发

一、目标 一步步分析并编写一个短信自动转发的deb插件 二、工具 mac系统已越狱iOS设备:脱壳及frida调试IDA Pro:静态分析测试设备:iphone6s-ios14.1.1三、步骤 1、守护进程 ​ 守护进程(daemon)是一类在后台运行的特殊进程,用于执行特定的系统任务。例如:推送服务、人…

Midjourney绘图参数详解:从基础到高级的全面指南

引言 Midjourney作为当前最受欢迎的AI绘图工具之一&#xff0c;其强大的参数系统为用户提供了丰富的创作可能性。本文将深入解析Midjourney的各项参数&#xff0c;帮助开发者更好地掌握这一工具&#xff0c;提升创作效率和质量。 一、基本参数配置 1. 图像比例调整 使用--ar…

音频进阶学习十九——逆系统(简单进行回声消除)

文章目录 前言一、可逆系统1.定义2.解卷积3.逆系统恢复原始信号过程4.逆系统与原系统的零极点关系 二、使用逆系统去除回声获取原信号的频谱原系统和逆系统幅频响应和相频响应使用逆系统恢复原始信号整体代码如下 总结 前言 在上一篇音频进阶学习十八——幅频响应相同系统、全…