web安全之跨站脚本攻击xss
定义:

后果
比如黑客可以通过恶意代码,拿到用户的cookie就可以去登陆了
分类
存储型
攻击者把恶意脚本存储在目标网站的数据库中(没有过滤直接保存),当用户访问这个页面时,恶意脚本会从数据库中被读取并在用户浏览器中执行。比如在那些允许用户评论的网站, 用户越多,中招的越多

流程
反射型
攻击者通过构造恶意链接,诱使用户点击,恶意脚本随请求发送到目标网站服务器,服务器查看了链接以后以为用户要检索某些信息,并没有进行额外的过滤,服务器的数据库也不需要保存什么信息,就只是返回了对应的结果,浏览器只是把结果呈现在页面.

例子

反射型一般是利用网页的检索功能, 你输入的检索信息会显示在页面中
如果url加一个script标签, 也就注入网页成为内容的一部分,浏览器就会去执行这个js代码

DOM型
攻击者在url中插入恶意代码,前端直接从url中获取恶意代码并且输出到页面,导致恶码被执行, 跟反射型很像,但浏览器并未把恶意代码发送给服务器, 是前端直接执行的. 比如url中的hash部分是不会发送给服务器的,即url前面的部分服务器照常请求,也就是浏览器的渲染分了两步走,给黑客留下可以攻击的漏洞
“#”部分的更改不会重新发送请求, 此页面将hash注入到了页面,黑客就可以利用这个点往页面注入内容, 比如获取cookie并发送等


三者区别
DOM 型取出和执⾏恶意代码由浏览器端完成,不涉及将恶意脚本发送到服务器,属于前端JavaScript 自身的安全漏洞,而其他两种属于服务端的安全漏洞。
应对策略
对用户输入进行严格的验证和过滤
前端验证
- 通过h5表单属性,如pattern正则表达式模式,type字段的属性进行限制等;
- js中的动态验证: 通过对输入添加addevenlistener监听
服务端验证
无论客户端是否验证,都必须在服务器端再次验证输入。
可以使用后端语言的内置函数或正则表达式进行验证。
输入过滤
- 用户输入显示在网页上之前,将其中的特殊字符(如 <, >, &, ', ")转义,防止其被解释为脚本, 防止 XSS 攻击。
- URL 编码: 将 URL 中的特殊字符转换为 % 加上两位十六进制数的形式,以确保 URL 安全传输。
let userInput = 'hello world';
let encodedInput = encodeURIComponent(userInput);
console.log(encodedInput); // hello%20world
限制用户输入的长度
防止缓冲区溢出和资源滥用。
内容安全策略CSP
在网关通过HTTP 响应头设Content-Security-Policy或者HTML 标签设置,本质是建立一个白名单,告诉浏览器哪些外部资源可以加载和执行,从而防止恶意代码的注入攻击。
CSP 通过指定允许的资源来源,阻止了恶意脚本、样式表、图像等资源的加载。例如,通过配置 script-src,可以只允许从可信任的域名加载脚本,任何来自其他域名的脚本都会被阻止


http-only
黑客本质是想获取cookie拿到客人信息, 而Cookie有一个http-only属性,表示只能被http请求携带,不能通过客户端js脚本访问cookie,
textContent代替innerHTML(反射型)
所以前端应该避免使用innerHTML、document.write, v-html、dangerouslySetInnerHTML 把不可信的数据作为 HTML 插到页面上,而应尽量使用 textContent 等。
textContent 属性用于设置或获取一个元素的文本内容。与 innerHTML 不同,textContent 仅处理文本,不会解析 HTML 标签。
参考视频:
https://www.bilibili.com/video/BV1rg411v7B8/?spm_id_from=333.788&vd_source=bb7c78c7981f6b653a3daf2f416312cb
https://www.bilibili.com/video/BV1ww411p7DG/?spm_id_from=pageDriver&vd_source=bb7c78c7981f6b653a3daf2f416312cb
相关文章:
web安全之跨站脚本攻击xss
定义: 后果 比如黑客可以通过恶意代码,拿到用户的cookie就可以去登陆了 分类 存储型 攻击者把恶意脚本存储在目标网站的数据库中(没有过滤直接保存),当用户访问这个页面时,恶意脚本会从数据库中被读取并在用户浏览器中执行。比如在那些允许用户评论的…...
TCP与UDP的理解
文章目录 UDP协议UDP协议的特点UDP的应用以及杂项 TCP协议TCP协议段格式解释和TCP过程详解确认应答机制 -- 序号和确认序号以及6位标志位中的ACK超时重传机制连接管理机制 与标志位SYN,FIN,ACK滑动窗口与16位窗口大小流量控制拥塞控制延迟应答捎带应答和面向字节流粘包问题TCP异…...
有效应对服务器遭受CC攻击的策略与实践
分布式拒绝服务(DDoS)攻击,尤其是其中的HTTP洪水攻击或称为CC攻击(Challenge Collapsar),是当今互联网安全领域的一大挑战。这种攻击通过大量合法的请求占用大量网络资源,导致服务器无法正常响应…...
STM32判断休眠
STM32是否进入休眠模式(或称为睡眠模式)的判断主要基于其功耗状态、内部时钟的关闭情况以及唤醒后的行为。以下是根据参考文章提供的信息,判断STM32是否进入休眠模式的方法: 功耗状态: STM32在休眠模式下,功耗会显著降低。这是因为休眠模式仅关闭了内核时钟,但外设仍然保…...
TikTok内嵌跨境商城全开源_搭建教程/前端uniapp+后端源码
多语言跨境电商外贸商城 TikTok内嵌商城,商家入驻一键铺货一键提货 全开源完美运营,接在tiktok里面的商城内嵌,也可单独分开出来当独立站运营 二十一种语言,可以做很多国家的市场,支持商家入驻,多店铺等等…...
前端学习(二)
这篇文章是紧接着前一篇前端学习写的,主要要写的是js剩下的基础知识 事件的绑定 什么是事件? HTML 事件可以是浏览器行为,也可以是用户行为。 当这些一些行为发生时,可以自动触发对应的JS函数的运行,我们称之为事件发生.JS的事件驱动指的就是…...
链接追踪系列-10.mall-swarm微服务运行并整合elk-上一篇的番外
因为上一篇没对微服务代码很详细地说明,所以在此借花献佛,使用开源的微服务代码去说明如何去做链路追踪。 项目是开源项目,fork到github以及gitee中,然后拉取到本地 后端代码: https://gitee.com/jelex/mall-swarm.gi…...
用Agent大模型,我发现了Prompt工程师的10大必备技能
随着 AI 如此快速的发展,目前求职市场上已经出现了 AI提示词 岗位。 大家应该跟我一样,对这种新兴岗位充满好奇心,比如:想知道这类岗位目前的需求量、技能要求、薪资情况等等。 这两天我用 Agent 大模型,对AI提示词岗…...
【GraphRAG】微软 graphrag 效果实测
GraphRAG 本文将基于以下来源,对Microsoft GraphRAG分析优缺点、以及示例实测分析。 1. Source 代码仓库: Welcome to GraphRAGhttps://microsoft.github.io/graphrag/ 微软文章1(2024.2.13):GraphRAG: Unlocking…...
十大常用加密软件排行榜|2024企业常用加密软件推荐
在2024年的市场环境中,随着数字化转型的深入和网络威胁的日益复杂,企业对数据安全的重视达到了新高度。加密软件作为保护信息免遭未授权访问和恶意攻击的关键工具,其重要性日益凸显。以下是根据市场反馈和专业评测整理的2024年度十大常用加密…...
lua 游戏架构 之 资源加载 LoaderManager (一)
定义一个 LoaderManager class,用于管理各种资源加载器。它使用了对象池(Object Pool)来优化资源加载器的创建和销毁,从而提高性能 举例定义一个 PrefabLoader --[[Desc: 封装AAS的接口,加载Prefab --]]---alias Pre…...
【人工智能】-- 迁移学习
个人主页:欢迎来到 Papicatch的博客 课设专栏 :学生成绩管理系统 专业知识专栏: 专业知识 文章目录 🍉引言 🍉迁移学习 🍈基本概念 🍍定义 🍌归纳迁移学习(Induct…...
Flink源码学习资料
Flink系列文档脑图 由于源码分析系列文档较多,本人绘制了Flink文档脑图。和下面的文档目录对应。各位读者可以选择自己感兴趣的模块阅读并参与讨论。 此脑图不定期更新中…… 文章目录 以下是本人Flink 源码分析系列文档目录,欢迎大家查阅和参与讨论。…...
HarmonyOS4.0开发-环境配置
鸿蒙应⽤开发快速体验 1.1. 准备开发环境 1.1.1 安装IDE 鸿蒙应⽤开发需要使⽤配套的IDE——HUAWEI DevEco Studio。 DevEco Studio基于IntelliJIDEA Community(IDEA社区版)构建,为鸿蒙应⽤提供了⼀站式开发环境,集成了开发、运⾏…...
GESP CCF C++ 三级认证真题 2024年6月
第 1 题 小杨父母带他到某培训机构给他报名参加CCF组织的GESP认证考试的第1级,那他可以选择的认证语言有()种。 A. 1 B. 2 C. 3 D. 4 第 2 题 下面流程图在yr输入2024时,可以判定yr代表闰年,并输出 2月是29天 &#x…...
华为的热机备份和流量限制
要求: 12,对现有网络进行改造升级,将当个防火墙组网改成双机热备的组网形式,做负载分担模式,游客区和DMZ区走FW4,生产区和办公区的流量走FW5 13,办公区上网用户限制流量不超过100M,…...
Vite的WebSocket
Vite的webSocket SocketJava Socket概述工作原理优势劣势 Java WebSocket概述工作原理代码示例nodeJS WebSocket优势劣势 vite中的WebSocket💫代码示例使用vite进行创建服务器并对Vue实行HMR 总结 Socket Java 中的 Socket 与 WebSocket 都用于网络通信,…...
Vue3项目基于Axios封装request请求
在 Vue 3 的项目开发中,使用 Axios 进行 HTTP 请求是非常常见的作法,为了更方便开发者更高效的进行代码编写和项目的维护,可以通过再次封装 Axios 来实现。 在本文中,博主将详细指导你如何在自己的 Vue 3 项目中使用 Axios 二次封…...
html(抽奖设计)
<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>抽奖</title><style type"text/css">* {margin: 0;padding: 0;}.container {width: 800px;height: 800px;border: 1px dashed red;position: absolut…...
Linux·权限与工具(上)
1. shell命令以及运行原理 Linux严格意义上来说是一个操作系统,我们称之为 "核心(kernel)" ,但我们一般的用户不呢个直接使用到核心,因为不会用。所以开发者在核心外面封装了一层 "外壳(shell)" 程序,来与核心…...
Linux应用开发之网络套接字编程(实例篇)
服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...
国防科技大学计算机基础课程笔记02信息编码
1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制,因此这个了16进制的数据既可以翻译成为这个机器码,也可以翻译成为这个国标码,所以这个时候很容易会出现这个歧义的情况; 因此,我们的这个国…...
Java 语言特性(面试系列2)
一、SQL 基础 1. 复杂查询 (1)连接查询(JOIN) 内连接(INNER JOIN):返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...
JavaScript 中的 ES|QL:利用 Apache Arrow 工具
作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...
江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命
在华东塑料包装行业面临限塑令深度调整的背景下,江苏艾立泰以一场跨国资源接力的创新实践,重新定义了绿色供应链的边界。 跨国回收网络:废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点,将海外废弃包装箱通过标准…...
搭建DNS域名解析服务器(正向解析资源文件)
正向解析资源文件 1)准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2)服务端安装软件:bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...
FFmpeg:Windows系统小白安装及其使用
一、安装 1.访问官网 Download FFmpeg 2.点击版本目录 3.选择版本点击安装 注意这里选择的是【release buids】,注意左上角标题 例如我安装在目录 F:\FFmpeg 4.解压 5.添加环境变量 把你解压后的bin目录(即exe所在文件夹)加入系统变量…...
python爬虫——气象数据爬取
一、导入库与全局配置 python 运行 import json import datetime import time import requests from sqlalchemy import create_engine import csv import pandas as pd作用: 引入数据解析、网络请求、时间处理、数据库操作等所需库。requests:发送 …...
Xela矩阵三轴触觉传感器的工作原理解析与应用场景
Xela矩阵三轴触觉传感器通过先进技术模拟人类触觉感知,帮助设备实现精确的力测量与位移监测。其核心功能基于磁性三维力测量与空间位移测量,能够捕捉多维触觉信息。该传感器的设计不仅提升了触觉感知的精度,还为机器人、医疗设备和制造业的智…...
Visual Studio Code 扩展
Visual Studio Code 扩展 change-case 大小写转换EmmyLua for VSCode 调试插件Bookmarks 书签 change-case 大小写转换 https://marketplace.visualstudio.com/items?itemNamewmaurer.change-case 选中单词后,命令 changeCase.commands 可预览转换效果 EmmyLua…...
