XSS伪协议

XSS伪协议简介

XSS(跨站脚本攻击)中的伪协议是指利用一些浏览器允许的特殊协议来执行恶意脚本的一种方式。常见的伪协议包括 javascript:, data:, vbscript: 等。

攻击者可以通过构造特定的URL,将恶意脚本注入到网页中,从而实现对用户的攻击。

以下我总结一些常见的伪协议及其示例:

1. javascript:

javascript: 协议是最常见的伪协议,可以直接执行JavaScript代码。

举个栗子:

<a href="javascript:alert('XSS')">

当用户点击这个链接时,会触发一个弹窗显示 "XSS"。

2. data:

data: 协议可用于将数据嵌入到URL中,常用于在图片标签中嵌入base64编码的图像数据。

举个栗子:

<imgsrc="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAIklEQVR42mP8/8HAwMDwzYAJUQLLlIYLd4AAAAASUVORK5CYII=" alt="XSS">

这段代码将一张base64编码的图片嵌入到页面中。

3. vbscript:

vbscript: 协议用于执行VBScript代码。

举个栗子:

<a href="vbscript:msgbox('XSS')">

当用户点击这个链接时,在IE浏览器中会弹出一个消息框显示 "XSS"。

a标签学习

在Web开发中,<a> 标签是HTML中用于创建链接的标签。通过 <a> 标签可以实现页面内跳转、跳转到外部链接或者执行JavaScript等操作。以下是关于常用 <a> 标签的一些内容:

基本语法:

<a href="URL">Link Text</a>

  • href 属性用于指定链接的目标,可以是一个URL、页面内锚点(#id)、邮箱地址(mailto:)等。
  • Link Text 是链接显示的文本内容。

常用属性:

  1. href:指定链接的目标地址。
  2. target:指定链接打开的方式,常见取值为 _self(在当前窗口打开)、_blank(在新窗口打开)等。
  3. title:指定链接的标题,通常浏览器会在鼠标悬停时显示。
  4. rel:指定链接与当前页面之间的关系,比如 nofollow 表示不追踪链接。

示例:

外部链接:

<a href="https://www.example.com" target="_blank">Visit Example Website</a>

  • 在这个例子中,用户点击链接“Visit Example Website”后会在新窗口打开 https://www.example.com。
内部链接:

<a href="#section2">Go to Section 2</a>

  • 这个链接是一个页面内的锚点链接,用户点击后会滚动到页面中id为“section2”的部分。
邮件链接:

<a href="mailto:info@example.com">Send Email</a>

  • 这个链接是发送邮件的链接,用户点击后会默认打开邮件客户端并填入收件人地址。
调用JavaScript函数:

<a href="javascript:alert('Hello')">Click me</a>

  • 这个链接是调用JavaScript函数的链接,用户点击后会触发一个JavaScript弹窗。

 

学习了知识以后来一道简单的CTF再好不过:欢迎来到level5

老样子直接输入<script>alert('abc')</script>试试水,发现没有成功。肯定被过滤了什么,那就Ctrl+U查看一波

script被改了,那就尝试一波a标签

payload:

"> <a href = javascript:alert(1)>

">这里注意一下闭合就好了

总结

a标签的href属性是一个常见的用户可控输入点,攻击者可以尝试利用这个属性来进行XSS攻击。 

常见的XSS攻击中会利用a标签的href属性中的伪协议来执行恶意脚本,例如:

<a href="javascript:alert('XSS Attack!')">Click me</a>

 当用户点击这个链接时,将执行JavaScript代码alert('XSS Attack!')

主流预防措施

  1. 输入验证和过滤:

    • 对用户输入的内容进行严格的验证和过滤,确保只有安全的内容被允许传递到前端页面中。
    • 移除或转义特殊字符,如 <>'"& 等,以防止恶意脚本注入。
  2. 不信任用户输入:

    • 不要直接将用户输入插入到HTML标签属性中,包括hrefsrc等,避免用户控制的数据被当做代码执行。
  3. 使用CSP(内容安全策略):

    • 配置合适的CSP,限制页面可以加载的资源和执行的内容,从而减少XSS攻击的风险。
  4. 避免使用动态JavaScript执行:

    • 尽量避免在URL中使用JavaScript伪协议,如 javascript:,而是通过其他方式加载和执行JavaScript代码。
  5. 编码输出:

    • 在输出用户输入时,使用适当的编码方式对内容进行转义,比如对HTML内容使用HTML编码、对URL参数使用URL编码等。

最后的最后,真诚希望我的文章能够帮助大家 !

参考文献:

《The Tangled Web: A Guide to Securing Modern Web Applications》 - 作者:Michal Zalewski 

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

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

相关文章

【C++】C到C++的入门知识

目录 1、C关键字 2、命名空间 2.1 命名空间的定义 2.2 命名空间的使用 2.2.1 加命名空间名称及作用域限定符 2.2.2 使用using将命名空间中某个成员引入 2.2.3 使用using namespace 命名空间名称引入 3、C输入&输出 4、缺省参数 4.1 缺省参数的概念 4.2 缺省参数的…

浅析AI大模型当前存在的技术瓶颈和限制及解决方案

方向五&#xff1a;未来发展趋势与挑战 提示&#xff1a;展望AI大模型学习的未来发展趋势&#xff0c;并讨论当前面临的主要挑战。可以关注新技术、新方法的出现&#xff0c;以及它们对AI大模型学习的影响&#xff1b;同时&#xff0c;也可以分析当前存在的技术瓶颈和限制&…

Linux 学习之路--工具篇--yum

前面介绍了权限有关的内容&#xff0c;这里继续介绍有关Linux里面常用的工具之一yum 目录 一、简单介绍 <1> 源代码安装 <2>rpm 包安装 <3>yum / apt-get(ubuntu) 安装 二、简单使用 <1>安装包介绍 <2> yum 的基本指令 -- install <…

JavaScript(一)---【js的两种导入方式、全局作用域、函数作用域、块作用域】

一.JavaScript介绍 1.1什么是JavaScript JavaScript简称“js”&#xff0c;js与java没有任何关系。 js是一种“轻量级、解释型、面向对象的脚本语言”。 二.JavaScript的两种导入方式 2.1内联式 在HTML文档中使用<script>标签直接引用。 <script>console.log…

人脸68关键点与K210疲劳检测

目录 人脸68关键点检测 检测闭眼睁眼 双眼关键点检测 计算眼睛的闭合程度&#xff1a; 原理: 设置阈值进行判断 实时监测和更新 拓展&#xff1a;通过判断上下眼皮重合程度去判断是否闭眼 检测嘴巴是否闭合 提取嘴唇上下轮廓的关键点 计算嘴唇上下轮廓关键点之间的距…

SQLite中的动态内存分配(五)

返回&#xff1a;SQLite—系列文章目录 上一篇&#xff1a;SQLite中的原子提交&#xff08;四&#xff09; 下一篇:自己编译SQLite或将SQLite移植到新的操作系统&#xff08;六&#xff09; ​概述 SQLite使用动态内存分配来获得 用于存储各种对象的内存 &#xff08;例如…

【微服务】spring状态机模式使用详解

一、前言 在很多系统中&#xff0c;通常会涉及到某个业务需要进行各种状态的切换操作&#xff0c;例如在审批流程场景下&#xff0c;某个审批的向下流转需要依赖于上一个状态的结束&#xff0c;再比如电商购物场景中&#xff0c;一个订单的生命周期往往伴随着不同的状态&#…

蓝桥集训之游戏

蓝桥集训之游戏 核心思想&#xff1a;博弈论 区间dp 设玩家1的最优解为A 玩家2的最优解为B 1的目标就是使A-B最大 2的目标就是使B-A最大 当玩家1取L左端点时 右边子区间结果就是玩家2的最优解B-A 即当前结果为w[L] – (B-A) 当玩家1取R右端点时 左边子区间结果就是玩家2的最…

docker部署DOS游戏

下载镜像 docker pull registry.cn-beijing.aliyuncs.com/wuxingge123/dosgame-web-docker:latestdocker-compose部署 vim docker-compose.yml version: 3 services:dosgame:container_name: dosgameimage: registry.cn-beijing.aliyuncs.com/wuxingge123/dosgame-web-docke…

【Leetcode每日一题】 递归 - 求根节点到叶节点数字之和(难度⭐⭐)(47)

1. 题目解析 题目链接&#xff1a;129. 求根节点到叶节点数字之和 这个问题的理解其实相当简单&#xff0c;只需看一下示例&#xff0c;基本就能明白其含义了。 2.算法原理 递归函数设计&#xff1a; 我们设计了一个递归函数 int dfs(TreeNode* root, int num)&#xff0c;其…

酷得单片机方案 2.4G儿童遥控漂移车

电子方案开发定制&#xff0c;我们是专业的 东莞酷得智能单片机方案之2.4G遥控玩具童车具有以下比较有特色的特点&#xff1a; 1、内置充电电池&#xff1a;这款小车配备了可充电的电池&#xff0c;无需频繁更换电池&#xff0c;既环保又方便。充电方式可能为USB充电或者专用…

如何使用Docker轻松构建和管理应用程序(二)

上一篇文章介绍了 Docker 基本概念&#xff0c;其中镜像、容器和 Dockerfile 。我们使用 Dockerfile 定义镜像&#xff0c;依赖镜像来运行容器&#xff0c;因此 Dockerfile 是镜像和容器的关键&#xff0c;Dockerfile 可以非常容易的定义镜像内容&#xff0c;同时在我们后期的微…

【Consul】Linux安装Consul保姆级教程

【Consul】Linux安装Consul保姆级教程 大家好 我是寸铁&#x1f44a; 总结了一篇【Consul】Linux安装Consul保姆级教程✨ 喜欢的小伙伴可以点点关注 &#x1f49d; 前言 今天要把编写的go程序放到linux上进行测试Consul服务注册与发现&#xff0c;那怎么样才能实现这一过程&am…

docker在线安装centos7(windows版)

目录 1、docker本地安装2、拉取centos7镜像3、启动容器4、配置SSH以访问centos7 1、docker本地安装 windows安装docker比较简单&#xff0c;官网搜索有个docker desktop装上就完事。 2、拉取centos7镜像 可以登录到docker hub上拉&#xff0c;也可以搜出来对应的centos7镜像…

3D检测:从pointnet,voxelnet,pointpillar到centerpoint

记录centerpoint学习笔记。目前被引用1275次&#xff0c;非常高。 地址&#xff1a;Center-Based 3D Object Detection and Tracking (thecvf.com) GitHub - tianweiy/CenterPoint CenterPoint&#xff1a;三维点云目标检测算法梳理及最新进展&#xff08;CVPR2021&#xff…

【蓝桥杯嵌入式】六、真题演练(一)-1演练篇:第 届真题

温馨提示&#xff1a; 真题演练分为模拟篇和研究篇。本专栏的主要作用是记录我的备赛过程&#xff0c;我打算先自己做一遍&#xff0c;把遇到的问题和不同之处记录到演练篇&#xff0c;然后再返回来仔细研究一下&#xff0c;找到最佳的解题方法记录到研究篇。 解题记录&#x…

android WMS服务

android WMS服务 WMS的定义 窗口的分类 WMS的启动 WindowManager Activity、Window、DecorView、ViewRootImpl 之间的关系 WindowToken WMS的定义 WMS是WindowManagerService的简称&#xff0c;它是android系统的核心服务之一&#xff0c;它在android的显示功能中扮演着…

python基础——异常捕获【try-except、else、finally】

&#x1f4dd;前言&#xff1a; 这篇文章主要介绍一下python基础中的异常处理&#xff1a; 1&#xff0c;异常 2&#xff0c;异常的捕获 3&#xff0c;finally语句 &#x1f3ac;个人简介&#xff1a;努力学习ing &#x1f4cb;个人专栏&#xff1a;C语言入门基础以及python入门…

github配置ssh

生成公钥 在电脑用户的目录下打开终端执行 ssh-keygen -t rsa: 执行完不要关 配置文件 看看用户的目录里 .ssh 目录&#xff1a; Host github.comHostname ssh.github.comPort 443配置公钥 复制 id_rsa.pub 文件里的内容 粘贴到 github上 连接密钥 回到刚才的终端…

牛客NC30 缺失的第一个正整数【simple map Java,Go,PHP】

题目 题目链接&#xff1a; https://www.nowcoder.com/practice/50ec6a5b0e4e45348544348278cdcee5 核心 Map参考答案Java import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定&#xff0c;请勿修改&#xff0c;直接返回方法规定的值即可…