安全基础 --- html标签 + 编码

news2024/9/23 11:19:49

html标签

(1)detail标签

<details>标签用来折叠内容,浏览器会折叠显示该标签的内容。

<1> 含义:

<details>
这是一段解释文本。
</details>

用户点击这段文本,折叠的文本就会展开,显示详细内容。

▼ 详细信息
这是一段解释文本。

<2> 例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <!-- on:js事件 -->
    <details ontoggle="alert(1)">
        <!-- 标签进行切换时,会出发某个函数 -->
        这是一个details标签
    </details> 
    <p>hello</p>
    <!-- 等同于html的实体编码 -->
    <p>&#104;&#101;&#108;&#108;&#111;</p>

    <!-- &lt;和&gt; === <>  html将<>的编码解析,在页面展现。因为<>被html编码,所以无法执行-->
    &lt;script&gt; alert(1); &lt;/script&gt;
</body>
</html>

(2)iframe标签

<iframe>标签用于在网页里面嵌入其他网页。

<1> 基本用法

<iframe>标签生成一个指定区域,在该区域中嵌入其他网页。它是一个容器元素,如果浏览器不支持<iframe>,就会显示内部的子元素。

例:iframe嵌入bilibili

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>iframe</title>
</head>
<body>
    <iframe src="http://www.bilibili.com" width="500" height="500" frameborder="0" allowfullscreen sandbox>
        <!-- 功能:将其他网页嵌入到本网页 -->
        <!-- sandbox:沙箱模式。 -->
        <p><a href="http://www.bilibili.com">点击打开嵌入页面</a></p>
    </iframe>
</body>
</html>

<2> sandbox属性

允许设置嵌入的网页的权限,等同于提供了一个隔离层,即“沙箱”。

【1】使用方法

[1] 可当布尔类型使用,打开所有限制

<iframe src="https://www.example.com" sandbox>
</iframe>

[2] 设置具体值,表示打开某项限制,未设置表示无此权限

原则:最小权限原则

【2】例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>iframe</title>
</head>
<body>
    <iframe src="./img.html" width="500" height="500" frameborder="0" allowfullscreen sandbox="allow-modals allow-scripts">
        <!-- 功能:将其他网页嵌入到本网页 -->
        <!-- sandbox:沙箱模式。 -->
        <p><a href="./img.html">点击打开嵌入页面</a></p>
    </iframe>
</body>
</html>

编码

(1)ASCII码

ASCII 码一共规定了128个字符的编码,比如空格SPACE是32(二进制00100000),大写的字母A是65(二进制01000001)。这128个符号(包括32个不能打印出来的控制符号),只占用了一个字节的后面7位,最前面的一位统一规定为0

(2)unicode编码

一种所有符号的编码,规模可以容纳100多万个符号

存在问题:

  1. 如何区别 unicode 和 ASCII 码?
  2. 英文字母是一个字节,别的字符 2-3 字节,若规定用 3-4 个字节表示,英文字母会存储浪费

结果:1) 出现许多种不同的存储方式;2) 无法推广

(3)UTF-8

UTF-8 就是在互联网上使用最广的一种 Unicode 的实现方式。其他实现方式还包括 UTF-16(字符用两个字节或四个字节表示)和 UTF-32(字符用四个字节表示)

<1> 特点

变长的编码方式,使用 1-4 个字节表示一个符号,根据不同符号变化字节长度

<2> 规则

  • 对于单字节的符号,字节的第一位设为0,后面7位为这个符号的 Unicode 码。因此对于英语字母,UTF-8 编码和 ASCII 码是相同的。
  • 对于n字节的符号(n > 1),第一个字节的前n位都设为1,第n + 1位设为0,后面字节的前两位一律设为10。剩下的没有提及的二进制位,全部为这个符号的 Unicode 码
Unicode符号范围     |        UTF-8编码方式
(十六进制)          |          (二进制)
----------------------+---------------------------------------------
0000 0000-0000 007F | 0xxxxxxx
0-127
0000 0080-0000 07FF | 110xxxxx 10xxxxxx
128-2047
0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx
2048-65535
0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

<3> 例

汉字`中`为例,展现UTF-8编码

ord("中") --- 3个字节
20013
bin(20013)
'0b 100 111000 101101'

1110    0100    10    111000    10    101101
1110    xxxx     10    xxxxxx     10     xxxxxx

hex(0b11100100)
'0xe4'
hex(0b10111000)
'0xb8'
hex(0b10101101)
'0xad'

e4b8ad

(4)html实体编码

<1> 实体表示法

实体的写法是&name;,其中的name是字符对应的实体。

<p>hello</p>
<!-- 等同于 -->
十进制
<p>&#104;&#101;&#108;&#108;&#111;</p>
ord('h') -> 114(在ascii表中,h对应104这个数字)

<!-- 等同于 -->
十六进制
<p>&#x68;&#x65;&#x6c;&#x6c;&#x6f;</p>
hex(104) -> 68(x代表16进制,16进制下,104 == x68)

<2> 常用特殊字符

  • <:&lt;
  • >:&gt;
  • 空格:&nbsp;

(5)urlcode编码

<1> URL

URL 是“统一资源定位符”(Uniform Resource Locator),表示各种资源的互联网地址。

出现位置:url地址栏

URL 字符转义的方法是,字符的十六进制 ASCII 码前面加上百分号%

【1】 网址的组成部分

https://www.example.com/path/index.html

协议:常用(http、https)。ftp、telnet

对应端口:

http -- 80

https -- 443

ftp -- 20 21

telnet -- 23

ssh -- 22

DNS -- 53

dhcp -- 67  68

smtp -- 25(邮件协议)

pop3 -- 110(邮件协议)

ladp -- 389(域控制器)

mysql -- 3306

sqlserver -- 1433(C#语言用得多)

oracle -- 1521

windows远程连接端口 -- 3389

redis(nosql数据库) -- 6379

【2】状态码

  • request是代表Http请求信息的对象
  • response对象是代表Http响应信息的对象(返回含有状态码)
2开头:访问成功
200 OK:请求成功,服务器正常响应。

3开头:重定向(较多用于登录)
300 Multiple Choices:客户端请求的资源有多个可供选择,需要进一步确定。
301 Moved Permanently:被请求的资源已永久移动到新的URL,客户端应该使用新的URL发起请求。(永久转移)
302 Found:被请求的资源已暂时移动到新的URL,客户端应该继续使用原始URL。(临时转移)
303 See Other:客户端应该使用另一个URL来获取资源。
304 Not Modified:客户端的缓存资源仍然有效,可以直接使用缓存的副本。
307 Temporary Redirect:请求的资源暂时移动到其他URL,客户端应该继续使用原始URL。(与302基本一致)
308 Permanent Redirect:请求的资源永久移动到其他URL,客户端应该使用新URL。

4开头:
400 Bad Request:请求错误,服务器无法理解或处理请求。
401 Unauthorized:未授权,需要进行身份验证或登录。
403 Forbidden:禁止访问,服务器拒绝请求。
404 Not Found:资源未找到,服务器无法找到请求的资源。

5开头:
500 Internal Server Error:服务器内部错误,无法完成请求。

<2> 编码表示(英文字母不解析)

  • !:%21

  • #:%23(相当于注释)

  • $:%24

  • &:%26

  • ':%27

  • (:%28

  • ):%29

  • *:%2A

  • +:%2B

  • ,:%2C

  • /:%2F

  • ::%3A

  • ;:%3B

  • =:%3D

  • ?:%3F

  • @:%40

  • [:%5B

  • ]:%5D

  • 空格:%20

例:在url地址栏输入?id=1' order by 3 --+

url地址栏会将其解析为:?id=1%27%20order%20by%203%20--+


附:

  • ord() --- unicode编码
  • hex() --- 16进制
  • oct() --- 8进制
  • int() --- 10进制
  • bin() --- 二进制

img标签实现绕过

基本用法

<img>标签用于插入图片。它是单独使用的,没有闭合标签。

 <img src="foo.jpg">

例:

[1] img标签加载图片

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>img</title>
</head>
<body>
    <img src="1111" alt="图片加载失败" width="300px" height="300px" onerror="alert(1)">
    <!-- 加载失败,触发onerror事件 -->
</body>
</html>

图片加载出现错误

[2] php文件

<?php
header('X-XSS-Protection:0');//通过php代码关闭浏览器的防御措施
$xss = isset($_GET['xss'])? $_GET['xss'] : '';// 三元运算符
$xss = str_replace(array("(",")","&","\\","<",">","'"),'',$xss);// replace函数,替换()<>'&\\,全部替换为''
// 过滤大小括号,使其无法执行函数
// &:防止使用html实体编码
// \:防止使用\u,unicode编码
// <>:防止使用标签
echo "<img src=\"{$xss}\">";//打印
?>

1) 反引号实现绕过:http:127.0.0.1/php/xss.php?xss=1" οnerrοr="alert`1`

2) 过滤反引号后,进行绕过

【1】实验:将()在urlcode编码中,写为:%28和%29。xss=1" οnerrοr="alert%281%29

【2】实验:在urlcode编码中,%25为%。xss=1 οnerrοr="alert%25281%2529

由于js中无法编码符号,所以显示为直接输出,过滤失败

【3】实验:使用location。xss=1" οnerrοr="javascript:alert%25281%2529

js中有个好用的特性:location这个函数,可以把右边所有的东西变为一个变量值,对于变量而言,js可以随意编码,最终实现绕过。

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

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

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

相关文章

山西电力市场日前价格预测【2023-07-31】

日前价格预测 预测明日&#xff08;2023-07-31&#xff09;山西电力市场全天平均日前电价为294.49元/MWh。其中&#xff0c;最高日前电价为318.11元/MWh&#xff0c;预计出现在19: 30。最低日前电价为278.89元/MWh&#xff0c;预计出现在00: 15。 价差方向预测 1&#xff1a;实…

Git远程仓库的创建、克隆、推送和拉取

文章目录 1.前言2.远程仓库的创建3.远程仓库的克隆3.1 使用HTTPS进行克隆3.2 使用SSH进行克隆 4.远程仓库的推送5. 远程仓库的拉取 1.前言 在之前的文章中,讲解了Git的一些基本概念和常用的命令. 是时候干一件大事了-实现多人协助开发! 环境:Centos7云服务器 代码托管平台: G…

基于LSTM神经网络的BIM对象识别【BIM+AI】

BIM 模型中的一个基本数据是对象的名称&#xff0c;尤其是房间。 没有专有名称&#xff0c;人们就不可能理解模型/设计的内容。 在本文中&#xff0c;我们尝试使用 Tensorflow 构建一个基于该数据识别房间的LSTM神经网络模型。 推荐&#xff1a;用 NSDT设计器 快速搭建可编程3D…

第一章HelloWorld

确认环境 java -version javac编写代码 public class HelloWorld{public static void main(String[] args){System.out.println("HelloWorld");} }编译运行 javac HelloWord.java编译java文件成class字节码文件 java HelloWorld运行.class字节码文件 备注 容易…

手把手教你使用stable diffusion生成自己的艺术二维码

艺术二维码制作指南 导读midjourneystable diffusion 环境准备安装stable diffusion webuisd-webui-qrcode-toolkit安装 草料二维码模型准备QR PatternQR Code MonsterIoC Lab Control Net 艺术二维码制作1. 二维码信息提取2. 使用QR Tookit生成二维码3. 下载二维码图片4. prom…

电脑维护指南:让你的战友始终高效稳定

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

管理类联考——写作——论说文——实战篇——立意篇——真题审题立意汇总分类

难度&#xff1a;*号越多越难&#xff0c;越需要看。 角度3——4种材料类型、4个立意对象、5种写作态度 寓言类材料**** 2022年 鸟类会飞是因为它们在进化中不断优化了其身体结构。飞行是一项较为特殊的运动&#xff0c;鸟类的躯干进化出了适合飞行的流线型。飞行也是一项需…

【数理知识】刚体基本运动

文章目录 1 刚体定义2 自由刚体3 两种基本运动1 平动2 转动 4 举例 11 计算质心位置&#xff0c;求差得到平移向量2 计算协方差矩阵3 奇异值分解4 计算旋转矩阵 Ref 1 刚体定义 刚体就是质点间距离保持不变的质点系。 刚体的空间位置由任意与刚体固连的不共线三点决定。 2 自…

HDMI协议实现彩条静态显示方块移动

文章目录 前言一、硬件原理1、硬件设计原理图2、引脚图 二、系统设计1、系统模块框图2、RTL视图3、RGB2DVI 模块框图4、ALTDDIO_OUT IP 核的信号框图 三、HDMI的行&场时序1、时序图2、常见显示器时序参数 四、源码1、video_driver(显示驱动模块)2、serializer_10_to_1(并转…

微信公众号接入AI ChatGPT机器人bot的详细教程

微信公众号可以与客服系统进行对接&#xff0c;实现智能自动回复或者人工回复的公众号客服系统实现对接的前提是需要公众号为认证的服务号&#xff0c;实现的功能概况&#xff1a;公众号客服接口对接&#xff0c;公众号模板消息提醒&#xff0c;网页授权获取到微信的昵称头像&a…

Python实现GA遗传算法优化支持向量机回归模型(SVR算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 遗传算法&#xff08;Genetic Algorithm&#xff0c;GA&#xff09;最早是由美国的 John holland于20世…

tinkerCAD案例:24. Ruler - Measuring Lengths 标尺 -量勺

tinkerCAD案例&#xff1a;24. Ruler - Measuring Lengths 标尺 - 测量长度 Project Overview: 项目概况&#xff1a; A machine shop, where any idea can become a reality, can cost millions and million of dollars. Still, the most important tool in the shop is the…

基于Open3D的点云处理12-体素化

体素化Voxelization 体素&#xff08;voxel&#xff09;是像素&#xff08;pixel&#xff09;、体积&#xff08;volume&#xff09;和元素&#xff08;element&#xff09;的组合词&#xff0c;相当于3D空间中的像素; 体素化是通过用空间均匀大小的体素网格(voxel grid)来模…

openpnp - ReferenceStripFeeder 改版零件

文章目录 openpnp - ReferenceStripFeeder 改版零件概述笔记整体效果散料飞达主体磁铁仓盖板飞达编带中间压条飞达编带两边压条装配体用的8mm编带模型END openpnp - ReferenceStripFeeder 改版零件 概述 官方推荐了ReferenceStripFeeder的模型smd_strip_feeders_mod_tray.zip…

【C++学习】STL容器——vector

目录 一、vector的介绍及使用 1.1 vector的介绍 1.2 vector的使用 1.2.1 vector的定义 1.2.2 vector iterator 的使用 1.2.3 vector 空间增长问题 1.2.4 vector 增删查改 1.2.5 vector 迭代器失效问题&#xff08;重点&#xff09; 二、vector深度剖析及模拟实现 ​编辑…

【JavaSE】数组的定义与使用

【本节目标】 1. 理解数组基本概念 2. 掌握数组的基本用法 3. 数组与方法互操作 4. 熟练掌握数组相关的常见问题和代码 目录 1. 数组的基本概念 1.1什么是数组 1.2 数组的创建及初始化 1.3 数组的使用 2. 数组是引用类型 2.1基本类型变量与引用类型变量的区别 2.2再谈引用…

慎思笃行,兴业致远:金融行业的数据之道

《中庸》中说&#xff0c;“博学之&#xff0c;审问之&#xff0c;慎思之&#xff0c;明辨之&#xff0c;笃行之”。这段话穿越千年&#xff0c;指引着中国千行百业的发展。对于金融行业来说&#xff0c;庞大的数据量可以说是“博学”的来源。但庞大的数据体量&#xff0c;既是…

网络通讯(服务端搭建)

一.本篇概况 本篇文章主要以C语言为主&#xff0c;通过C语言中所设定的函数以及环境来将网络通讯的服务端进行搭建。注&#xff1a;本篇并未涉及服务端与客户端之间的收发数据。 二.代码实现 1.初始化套接字库&#xff1a; if(WSAStartup(MAKEWORD(2, 2), &wsaData) ! 0…

你真的了解Java中的数组吗?

你真的了解Java中的数组吗&#xff1f; 数组是基本上所有语言都会有的一种数据类型&#xff0c;它表示一组相同类型的数据的集合&#xff0c;具有固定的长度&#xff0c;并且在内存中占据连续的空间。在C&#xff0c;C等语言中&#xff0c;数组的定义简洁清晰&#xff0c;而在J…

PDF.js实现搜索关键词高亮显示效果

在static\PDF\web\viewer.js找到定义setInitialView方法 大约是在1202行&#xff0c;不同的pdf.js版本不同 在方法体最后面添加如下代码&#xff1a; // 高亮显示关键词---------------------------------------- var keyword new URL(decodeURIComponent(location)).searchP…