【杂记-浅谈XSS跨站脚本攻击】

一、什么是XSS?

XSS,Cross-site Scripting,跨站脚本攻击,是一种典型的Web程序漏洞利用攻击,攻击者利用Web程序对用户输入检查不足的漏洞将可执行恶意脚本注入网站或Web应用,当用户访问网页时触发恶意脚本的执行,从而达到窃取用户个人数据、弹出广告,甚至篡改网页内容等攻击目的,跨站脚本攻击是一种客户端代码注入攻击,恶意脚本在前端浏览器或Web应用程序等客户端侧执行,而非在后端服务器或数据库执行,最终受害者是访问用户。

二、XSS是如何工作的?

跨站脚本攻击的基本原理是攻击者操纵存在漏洞的网站,向用户返回恶意脚本达成攻击目的。
1、攻击者发现存在漏洞的网站,然后利用漏洞在网页中注入恶意脚本,凡是对用户输入限制不够严格的网站都可能发生脚本注入,恶意脚本通常是JavaScript ,当然也可以是Java、VBScript、ActiveX、Flash等。
2、用户访问网站时,恶意脚本被加载到浏览器中并触发执行,触发恶意脚本执行的方法有很多种,例如,引诱用户点击链接,或当网页加载或用户鼠标停留在网页的特定元素上时自动触发脚本执行。
3、恶意脚本访问浏览器留存的Cookie、会话令牌以及其他敏感信息,甚至可以改写页面内容,从而达成攻击目的,攻击者通过窃取的用户Cookie就可以冒充用户,执行用户能够执行的操作,窃取用户身份信息、泄露用户文件等。另外攻击者还可以利用跨站脚本传播恶意软件、破坏网页内容、进行网络钓鱼等,实施更具破坏性的攻击。

三、常见XSS类型

反射型跨站脚本攻击反射型跨站脚本攻击是最常见和最简单的攻击形式,所谓反射,是指此种类型的注入脚本必须被包含在发往Web服务器的请求中,然后Web服务器以某种方式反射到用户浏览器执行,也就是注入脚本作为客户端的请求提交给Web服务器,服务器解析后在响应消息中返回脚本由浏览器执行,因此攻击者需要使用钓鱼邮件、弹窗链接以及其他社会工程学方法引诱用户点击链接向Web服务器发出请求,这种攻击类型Web服务器端无需存储注入脚本,直接通过HTTP GET或POST请求就可以完成攻击,实施比较简单,但是这种攻击方式需要由每个受害者触发才能发生攻击,往往也称为非持久型跨站脚本攻击。攻击者往往在合法的URL末尾添加恶意代码构造链接,例如:https://example.com/index.php?user=,用户点击此链接后,因为浏览器信任该网站,将执行恶意脚本代码。
存储型跨站脚本攻击
存储型跨站脚本攻击也称为持久型跨站脚本攻击,是一种最具破坏性的跨站脚本攻击。注入的脚本永久存储在Web服务器上,如数据库、内存或文件系统中,只要注入脚本代码没有被清理,每次用户访问网页时都将加载恶意脚本。存储型跨站脚本攻击一般发生在论坛、博客、留言板等允许用户共享内容的网站,如果网站存在漏洞,未严格校验用户输入内容就可能被攻击者利用。攻击者利用发帖、评论、修改个人信息等功能提交恶意脚本代码到Web服务器进行保存,那么只要访问对应网页的用户都会在不知情的情况下读取恶意脚本。相对于反射型跨站脚本攻击,存储型跨站脚本攻击影响范围更大,危及所有访问者,当然这种攻击方式也更难执行,攻击者需要找到可以利用的漏洞。
基于DOM的跨站脚本攻击
基于DOM(Document Object Model,文档对象模型)的跨站脚本攻击是一种更高级的攻击形式,通过篡改DOM注入恶意脚本。DOM提供对文档结构化的描述,并将HTML页面与脚本、程序语言联系起来,当网页被加载时,浏览器会创建页面的文档对象模型DOM,Web程序的客户端侧JavaScript脚本可以对DOM进行编辑从而动态修改网页内容,也就是从DOM获取数据然后在用户本地执行,在这个过程中,如果数据处理不当,攻击者就可以将恶意脚本注入DOM,然后读取DOM数据时触发攻击。经常被利用的DOM对象包括URL (document.URL)、URL 锚点部分 (location.hash) 和 Referrer (document.referrer)。基于DOM的跨站脚本攻击与反射型、存储型跨站脚本攻击有很大不同,整个攻击过程均在用户侧浏览器执行,无需Web服务器端进行解析和响应访问请求。这种类型的攻击比较难排查,WAF设备无法获取通信流量,可能难以发现攻击。

如何防止XSS

Web程序开发角度,需要遵循安全开发原则,采取措施防止跨站脚本攻击:
1、对用户输入进行验证和过滤,验证输入是否符合预期格式,过滤掉一些特殊字符和标签(例如

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

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

相关文章

App Web前端怎么开发:深入解析与开发实践

App Web前端怎么开发:深入解析与开发实践 在当今数字化时代,Web前端作为连接用户与应用程序的桥梁,其重要性不言而喻。对于想要涉足App Web前端开发的开发者而言,理解并掌握开发流程、技术栈以及最佳实践是至关重要的。本文将分四…

milvus向量数据库

Milvus 是一个开源的向量数据库,用于管理、搜索和分析高维向量数据。它特别适用于处理像图像、视频、音频和文本等非结构化数据。以下是关于 Milvus 向量数据库的详细介绍和入门教程。 ### Milvus 简介 Milvus 的主要特性包括: 1. **高性能**&#xf…

权限修饰符和代码块

一.权限修饰符 1.权限修饰符:是用来控制一个成员能够被访问的范围的。 2.可以修饰成员变量,方法,构造方法,内部类。 3.例子: public class Student {priviate String name;prviate int age;} 二.权限修饰符的分类 有四种作用范围大小…

自然语言处理中的RNN、LSTM、TextCNN和Transformer比较

引言 在自然语言处理(NLP)领域,理解和应用各种模型架构是必不可少的。本文将介绍几种常见的深度学习模型架构:RNN(循环神经网络)、LSTM(长短期记忆网络)、TextCNN(文本卷…

ubuntu下搭建Supervisor

sudo apt update #安装 sudo apt install supervisor#启动 supervisord 服务: sudo systemctl start supervisor#关闭 supervisord 服务 sudo systemctl stop supervisor#重启 supervisord 服务 sudo systemctl restart supervisor#设置 supervisord 开机自启 sudo …

详解寄存器模型reg_model的auto_predict

什么是reg_model镜像值? DUT的配置寄存器的值是实际值,reg_model有镜像值、期望值的概念。 镜像值:存放我们认为此时DUT里寄存器的实际值。 期望值:存放我们期望DUT寄存器被赋予的值。 什么是auto predict? 那么怎么更新reg…

安卓ANR检测、分析、优化面面谈

前言 一个引发讨论的楔子,以下三种现象有什么区别: App停止运行App暂无响应App闪退 答案: 产生原因不同:停止运行是UNCheckExceptionError暂无响应是ANRDialog闪退是CheckExceptionError 本文讨论的主题是ANR的定义、分类、复现…

Debian常用命令详细介绍

1. apt-get update:更新软件源列表 apt-get update命令用于更新系统中可用软件包的包列表。在Linux和类Unix操作系统中,软件包管理器(如APT)维护着一个包含可用软件包信息的列表,通常保存在系统的软件源中。通过运行a…

Three.js 中文Typeface文件字体大全 | 如何利用Github获取中文Typeface文件

Three.js中文3D字体在线示例 TextGeometry 和 TextBufferGeometry 是用于生成3D文本的有效工具。 在使用这些工具时,我们需要指定一个包含字体信息的 JSON 文件,称为 typeface.json。 Github 搜索结果 通过在 GitHub 上搜索 TextBufferGeometry 的相…

内核注入DLL,支持注入PPL

这是我的个人项目,目前功能: 内核注入DLL到进程,支持注入PPL进程,可绕过任意代码卫士保护,签名校验。内核调用应用层任意函数,支持常见的调用约定。 后续可能会增加: 代码注入 Rookit和Anti-…

E. 矩阵第k大

看到这句话,其中任意两个数都不能在同一行或者同一列 经典的网络流/匈牙利 由于小白看不懂网络流 (其实是我不会) ,不妨就讲讲匈牙利 匈牙利算法 前置知识: 二分图 匈牙利(是个人)算法是二分…

Android基础-内存泄漏

在Android开发中,内存泄漏是一个常见且重要的问题,它不仅影响应用的性能,还可能导致应用崩溃。因此,分析和解决内存泄漏问题对于提升应用的稳定性和用户体验至关重要。下面将详细阐述Android如何分析和解决内存泄漏问题。 一、内…

纵向导航栏使用navbar-nav-scroll溢出截断问题

项目场景: 组件:Bootstrap-4.6.2、JQuery 3.7.1 测试浏览器:Firefox126.0.1、Microsoft Edge125.0.2535.67 IDE:eclipes2024-03.R 在编写CRM的工作台主页面时,由于该页面使用的是较旧的技术,所以打算使用…

ChatGPT-4o 有何特别之处?

文章目录 多模态输入,多模态输出之前的模型和现在模型对比 大家已经知道,OpenAI 在 GPT-4 发布一年多后终于推出了一个新模型。它仍然是 GPT-4 的一个变体,但具有前所未见的多模态功能。 有趣的是,它包括实时视频处理等强大功能&…

基础9 探索图形化编程的奥秘:从物联网到工业自动化

办公室内,明媚的阳光透过窗户洒落,为每张办公桌披上了一层金色的光辉。同事们各自忙碌着,键盘敲击声、文件翻页声和低声讨论交织在一起,营造出一种忙碌而有序的氛围。空气中氤氲着淡淡的咖啡香气和纸张的清新味道,令人…

ML307R OpenCPU MQTT使用

一、函数介绍 二、示例代码 三、代码下载地址 一、函数介绍 MQTT 相关函数可以在cm_mqtt.h里面查看,一下也是里面相关的函数接口 /*** @brief 销毁mqtt client* * @param [in] client mqtt client* @return 成功返回0,失败返回-1* * @details 清除并释放client,异…

fastjson 泛型转换问题(详解)

系列文章目录 附属文章一:fastjson TypeReference 泛型类型(详解) 文章目录 系列文章目录前言一、代码演示1. 不存在泛型转换2. 存在泛型转换3. 存在泛型集合转换 二、原因分析三、解决方案1. 方案1:重新执行泛型的 json 转换2. …

数据可视化每周挑战——中国高校数据分析

最近要高考了,这里祝大家金榜题名,旗开得胜。 这是数据集,如果有需要的,可以私信我。 import pandas as pd import numpy as np import matplotlib.pyplot as plt from pyecharts.charts import Line from pyecharts.charts impo…

iPhone 语言编程:深入探索与无限可能

iPhone 语言编程:深入探索与无限可能 在数字化时代的浪潮中,iPhone 作为一款全球领先的智能手机,其语言编程的奥秘一直吸引着众多开发者与爱好者的目光。iPhone 的语言编程不仅关乎技术实现,更涉及到用户体验、创新应用等多个层面…

图像处理ASIC设计方法 笔记26 非均匀性校正SOC如何设计

在红外成像技术领域,非均匀性校正是一个至关重要的环节,它直接影响到成像系统的性能和目标检测识别的准确性。非均匀性是指红外焦平面阵列(IRFPA)中各个像元对同一辐射强度的响应不一致的现象,这种不一致性可能是由于制造过程中的缺陷、材料的不均匀性或者像元间的热电特性…