Web安全与防护 (微课版) 课件 01-3 项目一 任务四 Web应用中的编码_第1页
Web安全与防护 (微课版) 课件 01-3 项目一 任务四 Web应用中的编码_第2页
Web安全与防护 (微课版) 课件 01-3 项目一 任务四 Web应用中的编码_第3页
Web安全与防护 (微课版) 课件 01-3 项目一 任务四 Web应用中的编码_第4页
Web安全与防护 (微课版) 课件 01-3 项目一 任务四 Web应用中的编码_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

项目一Web安全基础Web安全与防护本任务要点学习目标字符编码传输过程的编码熟悉字符编码的原理和作用。熟悉URL编码方法。熟悉Base64编码方法。任务四Web应用中的编码目录CONTENTS01/字符编码02/传输过程的编码接收方发送方字符编码01字符是各种文字和符号的总称,其中包括各个国家文字、标点符号、图形符号、数字等。常见的语言都有对应的字符编码,字符编码就是约定某个字在计算机中的编号。在Web系统中,需要使用某种编码方式来表现语言所对应的文字和格式。编码解码传输有信息交换就会产生编码、传输、解码三个过程编码是信息从一种形式转变成另一种形式的过程。比如人类的语言通过声带编码,转换成声波。解码是编码的逆函数,耳膜接收声波,通过脑神经解码成人类文化所能理解的信息。在不同的编码中,同一个字对应的编号完全不同,因此容易形成“乱码”。字符编码01ASCII编码:(AmericanStandardCodeforInformationInterchange,美国信息交换标准代码)上个世纪60年代,美国制定的一套字符编码,对英语字符与二进制位之间的关系,做了统一规定,被称为ASCII码,是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。是最通用的信息交换标准,等同于国际标准ISO/IEC646。计算机内部,所有信息最终都是一个二进制值。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte)。因此,一个字节一共可以用来表示256种不同的状态,每一个状态对应一个符号,就是256个符号,从00000000到11111111。常见ASCII码的大小规则:0~9<A~Z<a~z1)数字比字母要小,如“7”<“F”;2)数字0比数字9要小,并按0到9顺序递增,如“3”<“8”;3)字母A比字母Z要小,并按A到Z顺序递增,如“A”<“Z”;同理,字母a比字母z要小,“a”<“z”;4)同个字母的大写字母比小写字母要小32,如“A”<“a”;字符编码01ASCII编码:(AmericanStandardCodeforInformationInterchange,美国信息交换标准代码)字符编码01英语是字母文字,其常用单词均可以利用26个字母拼接实现,因此ASCII编码可满足英语环境。但在面对形意文字时,使用ASCII编码会有非常大的问题。中文是典型的形意文字,常用的文字数量达到350个以上,仅仅利用8bit提供的256个编码数量远远无法满足编码需求。Unicode编码UTF-8的特点是对不同范围的字符使用不同长度的编码。UTF-16编码以16位无符号整数为单位。我们把Unicode编码记作U。前缀写为\u、%u。UTF-32编码以32位无符号整数为单位。Unicode编码与ASCII编码不兼容,但可以转换。【试一试】访问/unicode/站点,尝试将“你好”转换成Unicode编码和ASCII编码。Unicode编码,又称万国码、国际码、统一码,是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。Unicode编码共有三种具体实现,分别为utf-8,utf-16,utf-32,其中utf-8占用一到四个字节,utf-16占用二或四个字节,utf-32占用四个字节。Unicode编码范围是:0-0x10FFFF,可以容纳1114112个字符。传输过程的编码02URL与URL编码URL(UniformResourceLocator,统一资源定位器、定位地址,俗称网页地址,简称网址),是因特网上标准的资源地址,如同在网络上的门牌。完整格式:scheme:[//[user[:password]@]host[:port]][/path][?query][#fragment][协议类型]://[用户名[:密码]]@[服务器地址]:[端口号]/[资源层级文件路径][文件名]?[查询]#[片段ID]协议类型:常见的有http、https,还有ftp、file、mailto、data等。用户名、密码:这没什么好解释的,就是字面意思。服务器地址:有的时候你在URL上看到的是域名,其实会通过DNS转为IP地址,所以还是服务器IP地址。端口号:常见80、443、21、22等。资源层级文件路径:大部分会隐藏,就是服务器的目录路径,使用"/"区别每一层。文件名:如访问网页,可能是xxx.htm、xxx.html、xxx.php等,例如,index.html。查询:使用"&"连接片段ID:有的时候被称为“锚点”,一般是指CSS中的id,就是使用浏览器调试时看到的id属性,有时也可通过这个进行XSS或sql注入。【试一试】访问站点,收缩“URL”,观察地址栏中的信息,尝试分析一下URL的结构。其中[用户名[:密码]]、[端口号]、[查询]、[片段ID]都属于选填项。传输过程的编码02URL与URL编码RFC3986文档规定,URL中只允许包含英文字母(a~z、A~Z)、数字(0~9)、4个特殊字符(-、_、.、~),以及所有保留字符。在实际Web应用中,所使用的字符远不只这个范围,如用户输入的参数中可能还带有单引号、百分号、中文等。因此,需要对URL中的非允许字符进行编码。URL编码主体采用的是ASCII编码表,编码方式是用%(百分号)加上两位字符代表一个字节。例如,单引号在ASCII中的十六进制编码为27,在URL编码中就是%27。时间状态编码前HTTP://3/loginPage.jsp?name=测试&passwd=ww121%$编码后HTTP://3/loginPag.jsp?name=%E6%B5%8B%E8%AF%95&passwd=wwl21%25$对于中文字符,会先确认当前页面所用的编码格式。假设当前页面为UTF-8编码。可以看到,URL编码里针对参数“wwl21%$”中的“%”进行了编码,编码结果为“%25”。针对中文字符“测试”,URL编码为“%E6%85%8B%E8%AF%95”。查询“测试”字符的UTF-8编码,其十六进制编码就是“E6B58BE8AF95”字符编码十进制编码十六进制测15119755E6B58B试15249301E8AF95【试一试】根据上面的方法,尝试对“你好”进行URL编码,写出编码字符传输过程的编码02Base编码Base编码是一种将二进制数据转换为可打印字符的编码方式。它将二进制数据按照一定规则映射为一组字符,以便于传输和存储。Base编码常用于将二进制数据表示为文本形式,例如在URL中传递二进制数据或在数据库中存储二进制数据。常见Base编码方式有Base16、Base32、Base64。Base16编码也称为十六进制编码,将每个字节的高4位和低4位分别转换为一个可打印字符,使用16个字符(包括0-9和A-F)进行表示。常用于表示散列值、数字签名和其他需要可读性较高的二进制数据。Base32编码将5个字节的二进制数据转换为8个可打印字符,使用32个字符(包括大写字母和数字)进行表示。常用于在文件名、DNS记录和身份验证令牌中表示二进制数据。Base64编码将3个字节的二进制数据转换为4个可打印字符,使用64个字符(包括大小写字母、数字和特殊字符)进行表示。常用于在电子邮件、HTTP请求和XML文档中传输二进制数据。Base编码方式可打印字符:Base编码将二进制数据转换为可打印字符,方便传输和存储。容错性:Base编码可以处理部分数据丢失或错误,因为编码后的数据仍然可以被解码还原为原始的二进制数据。Base编码特点传输过程的编码02Base64编码原理1准备数据将要编码的二进制数据准备好,通常是字节的形式。2分组将二进制数据分成固定大小的组,每组通常为3字节(24位)。如果最后一组不足3字节,通常需要进行填充,以便每组都有3字节。3进制转换将每个3字节的二进制数据视为一个8bit*3=24bit位的二进制整数,再转化为一个十进制整数。4编码将每个十进制整数编码为Base64字符。5填充如果原始数据的长度不是3的倍数,可以使用一个或两个填充字符“=”来补全Base64编码,以确保编码长度是4的倍数。1、Base64字符集通常包括64个字符,通常是大写字母A到Z、小写字母a到z、数字0到9以及两个额外的字符(通常是"+"和"/")。2、以24位整数为例,将它分成4组,每组6位。将4组6位整数编码为4个Base64字符。3、每个6位整数对应一个Base64字符,根据其在Base64字符集中的位置来选择。4、如果原始数据不足3字节,会添加一个或两个额外的0位,以确保每个6位整数都有6位。5、Base64编码的结果是一个文本字符串,其中包含一系列Base64字符,每4个字符分为一组,每组表示一个24位整数。传输过程的编码02Base64常用字符索引表编码示例:base64编码Man编码示例:Base64的末尾补足【试一试】使用Base

64编码对Word进行编码传输过程的编码02HTML字符实体HTML字符实体(CharacterEntity)是用来表示HTML中危险字符的方案,也是解决跨站脚本(XSS)攻击的有效手段。<script>alert(/xss/)</script><script>alert(/xss/)</script>HTML字符实体编码最常用的字符实体传输过程的编码02HTML字符实体HTML字符实体(CharacterEntity)是用来表示HTML中危险字符的方案,也是解决跨站脚本(XSS)攻击的有效手段。<script>alert(/xss/)</script><script>alert(/xss/)</script>HTML字符实体编码数学和希腊字母标志课堂实践一、任务名称:熟悉常见编码方式的编码和解码二、任务内容:使用burpsuite的解码器功能,对输入的信息尝试进行URL编码、BASE64编码,并将编码后的信息,传递给同组同学进行解码操作,对比解码后的结果与初始输

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论