浏览器安全之XSS跨站脚本

基本概念

跨站脚本(Cross-Site Scripting,XSS)是一种经常出现在Web应用程序中的计算机安全漏洞,是由于Web应用程序对用户的输入过滤不足而产生的。
攻击者利用网站漏洞把恶意的脚本代码(通常包括HTML代码和客户端Javascript脚本)注入到网页之中,当其他用户浏览这些网页时,就会执行其中的恶意代码,对受害用户可能采取Cookie资料窃取、会话劫持、钓鱼欺骗等各种攻击。
由于和另一种网页技术——层叠样式表(Cascading Style Sheets,CSS)的缩写一样,为了防止混淆,故把原本的CSS简称为XSS。

攻击过程示意图

在这里插入图片描述

分类

反射型跨站脚本

1、基本概念
反射型跨站脚本(Reflected Cross-site Scripting)也称作非持久型、参数型跨站脚本。这种类型的跨站脚本是最常见,也是使用最广的一种,主要用于将恶意脚本附加到URL地址的参数中。

反射型XSS的利用一般是攻击者通过特定手法(比如利用电子邮件),诱使用户去访问一个包含恶意代码的URL,当受害者单击这些专门设计的链接的时候,恶意JavaScript代码会直接在受害者主机上的浏览器执行。它的特点是只在用户单击时触发,而且只执行一次,非持久化,所以称为反射型跨站式脚本

2、攻击过程
在这里插入图片描述

此类 XSS 通常出现在网站的搜索栏、用户登入口等地方,常用来窃取客户端Cookies 或进行钓鱼欺骗。

持久型跨站脚本

1、基本概念
持久型跨站脚本(Persistent Cross-site Scripting)也等于存储型跨站脚本(Stored Cross-site Scripting),比反射型跨站脚本更具威胁性,并且可能影响到Web服务器自身的安全。

此类XSS不需要用户单击特定URL就能执行跨站脚本,攻击者事先将恶意JavaScript代码上传或存储到漏洞服务器中,只要受害者浏览包含此恶意JavaScript代码的页面就会执行恶意代码。

2、攻击过程

在这里插入图片描述

持久型 XSS 一般出现在网站的留言、评论、博客日志等交互处,恶意脚本被存储到客户端或者服务器的数据库中,当其他用户浏览该网页时,站点即从数据库中读取恶意用户存入的非法数据,然后显示在页面中,即在受害者主机上的浏览器执行恶意代码。

DOM 型 XSS

1、基本概念
反射型和持久型XSS漏洞都表现出一种特殊的行为模式,其中应用程序提取用户控制的数据并以危险的方式将这些数据返回给用户。第三类XSS漏洞并不具有这种特点。在这种漏洞中,攻击者的JavaScript通过以下过程得以执行。

  • 用户请求一个经过专门设计的URL,它由攻击者提交,且其中包含嵌入式JavaScript。

  • 服务器的响应中并不以任何形式包含攻击者的脚本。

  • 当用户的浏览器处理这个响应时,上述脚本得以处理。

这一系列事件如何发生呢?由于客户端JavaScript可以访问浏览器的文本对象模型(Document Object Model, DOM),因此它能够决定用于加载当前页面的URL。由应用程序发布的一段脚本可以从URL中提取数据,对这些数据进行处理,然后用它动态更新页面的内容。如果这样,应用程序就可能易于受到基于DOM的XSS攻击。

2、攻击过程
在这里插入图片描述

预防攻击

  • 可以从浏览器的执行来进行预防。
    一种是使用纯前端的方式,不用服务器端拼接后返回(不使用服务端渲染)。
    另一种是对需要插入到 HTML 中的代码做好充分的转义。
    对于 DOM 型的攻击,主要是前端脚本的不可靠而造成的,对于数据获取渲染和字符串拼接的时候应该对可能出现的恶意代码情况进行判断。

  • 使用 CSPCSP 的本质是建立一个白名单,告诉浏览器哪些外部资源可以加载和执行,从而防止恶意代码的注入攻击。

    CSP 指的是内容安全策略,它的本质是建立一个白名单,告诉浏览器哪些外部资源可以加载和执行。我们只需要配置规则,如何拦截由浏览器自己来实现。
    通常有两种方式来开启 CSP,一种是设置 HTTP 首部中的 Content-Security-Policy,一种是设置meta标签的方式

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Vue.js 框架能力的官方认证

这两天Vue官方推出了Vue.js 认证计划。 即框架能力官方认证,即 Vue.js 框架能力证书。该认证由 Vue School 与 Vue.js 团队合作提供支持。官网:Vue.js - Official Certification Program 官方介绍此次的试题集和代码挑战由 Vue.js 核心团队审核&#xff…

react之按钮鉴权

使用HOC来完成 HOC:高阶组件,是React中复用组件逻辑的一种高级技巧。HOC自身不是React API的一部分,他是一种基于React的组合特性而形成的设计模式。 作用:用于复用组件的业务逻辑 VUE mixinReact Hoc 用户数据渲染带操作按钮渲…

Shell快速入门笔记

文章目录 Shell 快速入门笔记1、Shell概述2、Shell初体验4、注释5、变量6、数据类型6.1 字符串6.2 数组 7、参数传递8、运算符9、常用命令9.1 echo命令9.2 printf命令9.3 test命令 10、流程控制10.1 条件判断10.2 循环 11、函数12、输入/输出重定向12.0 前置知识12.1 输出重定向…

IPsec中IKE与ISAKMP过程分析(主模式-消息3)

IPsec中IKE与ISAKMP过程分析(主模式-消息1)_搞搞搞高傲的博客-CSDN博客 IPsec中IKE与ISAKMP过程分析(主模式-消息2)_搞搞搞高傲的博客-CSDN博客 阶段目标过程消息IKE第一阶段建立一个ISAKMP SA实现通信双发的身份鉴别和密钥交换&…

一文详细介绍查看和启用nginx日志(access.log和error.log),nginx错误日志的安全级别,自定义访问日志中的格式

文章目录 1. 文章引言2. Nginx访问日志(access.log)2.1 简述访问日志2.2 启用Nginx访问日志2.3 自定义访问日志中的格式 3. Nginx错误日志(error.log)3.1 简述错误日志3.2 启用错误日志3.3 Nginx错误日志的安全级别 4. 文末总结 1. 文章引言 我们在实际工作中,经常使…

数字设计小思 - D触发器与死缠烂打的亚稳态

前言 本系列整理数字系统设计的相关知识体系架构,为了方便后续自己查阅与求职准备。在FPGA和ASIC设计中,D触发器是最常用的器件,也可以说是时序逻辑的核心,本文根据个人的思考历程结合相关书籍内容和网上文章,聊一聊D…

函数-函数递归及练习

目录 1、什么是递归? 2、递归的两个必要条件 3、递归的练习 3.1 接受一个整型值(无符号),按照顺序打印它的每一位 3.2 编写函数不允许创建临时变量,求字符串的长度 3.3 求第n个斐波那契数 3.4 字符串逆序&…

Go语言-数据结构与算法

go语言之专业数据结构与算法 20.4 稀疏 sparsearray 数组 20.4.1 先看一个实际的需求  编写的五子棋程序中,有存盘退出和续上盘的功能 稀疏数组的处理方法是 : 1) 记录数组一共有几行几列,有多少个不同的值 2) 思想:把具有不同值…

【五一创作】【Midjourney】Midjourney 连续性人物创作 ② ( 获取大图和 Seed 随机种子 | 通过 seed 随机种子生成类似图像 )

文章目录 一、获取大图和 Seed 随机种子二、通过 seed 种子生成类似图像 一、获取大图和 Seed 随机种子 注意 : 一定是使用 U 按钮 , 在生成的大图的基础上 , 添加 信封 表情 , 才能获取该大图的 Seed 种子编码 ; 在上一篇博客生成图像的基础上 , 点击 U3 获取第三张图的大图 ;…

STL常用梳理——VECTOR常用接口及其迭代器实现

Vector篇 Vector介绍Vector实现1、定义默认构造函数使用实现 2、迭代器Iterator迭代器使用 3、空间增长问题使用实现 迭代器迭代器介绍迭代器实现 Vector介绍 vector是STL中容器之一,特性如下: vector是表示可变大小数组的序列容器。就像数组一样&#…

Python基础合集 练习21 (错误与异常处理语句)

‘’‘try: block1 except[ExceptionName]: block2 ‘’’ block1:执行代码,表示可能会出现错误的代码块 ExceptionName: 表示要捕获的异常名称,为可选参数.如果不指定异常名称,则表示捕获所有异常 block2:表示发生异常时执行的代码块 while True: try: num int(input(请输…

设计模式——工厂模式

导航: 【黑马Java笔记踩坑汇总】JavaSEJavaWebSSMSpringBoot瑞吉外卖SpringCloud黑马旅游谷粒商城学成在线设计模式牛客面试题 目录 1、工厂模式介绍 2、披萨项目需求 3、传统方式 4、非静态简单工厂模式 5、静态简单工厂模式 6、工厂方法模式 7、抽象工厂模…

spass modeler

课时1:SPSS Modeler 简介 本课时一共分为五个模块,分别是Modeler概述、工具安装、窗口说明以及功能介绍和应用案例。相信通过本课时内容的学习,大家将会对SPSS Modeler有个基础的了解. 在学习本节课内容之前,先来看看本节课我们究…

目标检测模型量化---用POT工具实现YOLOv5模型INT8量化

POT工具是什么 POT工具,全称:Post-training Optimization Tool,即训练后优化工具,主要功能是将YOLOv5 OpenVINO™ FP32 模型进行 INT8 量化,实现模型文件压缩,从而进一步提高模型推理性能。 不同于 Quantiz…

MYSQL-数据库管理(上)

一、数据库概述 一、数据库基本概念 1.1 数据 1) 描述事物的符号记录称为数据(Data)。数字、文字、图形、图像、声音、档案记录等 都是数据。 2)数据是以“记录”的形式按照统一的格式进行存储的,而不是杂乱无章的。…

Mask2Former来了!用于通用图像分割的 Masked-attention Mask Transformer

原理https://blog.csdn.net/bikahuli/article/details/121991697 源码解析 论文地址:http://arxiv.org/abs/2112.01527 项目地址:https://bowenc0221.github.io/mask2former Mask2Former的整体架构由三个组件组成: 主干特征提取器&#xff…

【Java笔试强训 29】

🎉🎉🎉点进来你就是我的人了博主主页:🙈🙈🙈戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔🤺🤺🤺 目录 一、选择题 二、编程题 🔥求正数数…

UNIX环境高级编程——进程关系

9.1 引言 本章详细说明进程组以及会话的概念,还将介绍登录shell(登录时所调用的)和所有从登录shell启动的进程之间的关系。 9.2 终端登录 9.3 网络登录 9.4 进程组 每个进程除了有一进程ID之外,还属于一个进程组,进…

chatgpt 数据相关应用论文策略简介

hatGPT等预训练大模型,一个核心能力就是经过海量语料的训练加上强化学习的引导,其具有强大的接近人类的文本生成能力。这个能力的一大用途,就是可以为我们生产数据或者标注数据,再基于这些数据训练我们自己的模型。 On the Feasi…

如何让ChatGPT成为科研工作中的小助手?(附使用指南)

大家好,我是带我去滑雪! 从2022年年底发布叫ChatGPT的人工智能聊天机器人以来,逐渐强势进入了各行各业,一夜火爆全网,它使用自然语言处理技术来与用户进行交互和沟通,可以回答用户关于知识、娱乐、生活等方…