当前位置:网站首页>【Try to Hack】URL
【Try to Hack】URL
2022-06-11 14:03:00 【开心星人】
博客主页:开心星人的博客主页
系列专栏:Try to Hack
欢迎关注点赞收藏️留言
首发时间:2022年6月11日
作者水平很有限,如果发现错误,还望告知,感谢!
导航小助手
URL格式
URL(Uniform Resource Locator, 统一资源定位器),也就是我们经常提的链接,通过URL请求可以查找到唯一的资源,格式如下:
protocol :// hostname[:port] / path / [;parameters][?query]#fragment
举个例子http://www.foo.com/path/f.php?id=1&type=cool#new
对应关系为:protocol <=> httphostname <=> www.foo.compath <=> /path/f.phpquery <=> id=1&type=coolfragment <=> new
hostname注意点
hostname既可以是域名也可以是主机名
域名访问和ip访问的区别:
1、ip访问对应某一台确定的服务器;域名访问相当于在ip访问的基础上,做了一个反向代理的中间功能。例如:百度,很多人会同时使用,如果使用的是同一台服务器的话,服务器估计会扛不住,如果访问的是域名,中间的反向代理,可以将用户反向代理到不同的服务器上,减轻服务器压力。
2、扫描ip范围更广一点,一般都是网站访问目录的上一级,一般管理员备份的时候会把备份文件放到ip地址所指向的根目录。(这一点可以利用)
fragment
fragment(信息片断)(锚点)
信息片断,字符串,用于指定网络资源中的片断。例如一个网页中有多个名词解释,可使用fragment直接定位到某一名词解释。
是资源本身的某一部分的一个锚点。锚点代表资源内的一种“书签”,它给予浏览器显示位于该“加书签”点的内容的指示。 例如,在HTML文档上,浏览器将滚动到定义锚点的那个点上;在视频或音频文档上,浏览器将转到锚点代表的那个时间。值得注意的是 # 号后面的部分,也称为片段标识符,永远不会与请求一起发送到服务器。
需要HTTP Basic认证的URL请求
对于需要HTTP Basic认证的URL请求,甚至可以将用户名与密码直接放入URL中,在hostname之前
例如http://username:[email protected]/
URL编码方式
摘自 阮一峰:关于URL编码
URL有个重点就是编码方式,有三类:escape、encodeURI、encodeURIComponent,对应的解码函数是:unescape、decodeURI、decodeURIComponent。这三个编码函数是有差异的,甚至浏览器在自动URL编码中也存在差异。
一般来说,URL只能使用英文字母、阿拉伯数字和某些标点符号,不能使用其他文字和符号。只有字母和数字[0-9a-zA-Z]、一些特殊符号"$-_.+!*'(),"[不包括双引号]、以及某些保留字,才可以不经过编码直接用于URL。
不同的操作系统、不同的浏览器、不同的网页字符集,将导致完全不同的编码结果。那如何能够保证客户端只用一种编码方法向服务器发出请求?
就是使用Javascript先对URL编码,然后再向服务器提交,不要给浏览器插手的机会。因为Javascript的输出总是一致的,所以就保证了服务器得到的数据是格式统一的。
Javascript函数:escape()
这个函数现在已经不提倡使用了,但是由于历史原因,很多地方还在使用它
escape()不能直接用于URL编码,它的真正作用是返回一个字符的Unicode编码值。比如"春节"的返回结果是%u6625%u8282,也就是说在Unicode字符集中,"春"是第6625个(十六进制)字符,"节"是第8282个(十六进制)字符。
它的具体规则是,除了ASCII字母、数字、标点符号@ * _ + - . /以外,对其他所有字符进行编码。在\u0000到\u00ff之间的符号被转成%xx的形式,其余符号被转成%uxxxx的形式。
所以,“Hello World"的escape()编码就是"Hello%20World”。因为空格的Unicode值是20(十六进制)。
无论网页的原始编码是什么,一旦被Javascript编码,就都变为unicode字符。也就是说,Javascipt函数的输入和输出,默认都是Unicode字符。这一点对下面两个函数也适用。
escape()不对"+"编码。但是我们知道,网页在提交表单的时候,如果有空格,则会被转化为+字符。服务器处理数据的时候,会把+号处理成空格。所以,使用的时候要小心。
Javascript函数:encodeURI()
ncodeURI()是Javascript中真正用来对URL编码的函数。
它着眼于对整个URL进行编码,因此除了常见的符号以外,对其他一些在网址中有特殊含义的符号; / ? : @ & = + $ , #,也不进行编码。编码后,它输出符号的utf-8形式,并且在每个字节前加上%。

需要注意的是,它不对单引号'编码。
Javascript函数:encodeURIComponent()
与encodeURI()的区别是,它用于对URL的组成部分进行个别编码,而不用于对整个URL进行编码。
因此,; / ? : @ & = + $ , #,这些在encodeURI()中不被编码的符号,在encodeURIComponent()中统统会被编码。至于具体的编码方法,两者是一样。
边栏推荐
- Distributed file system and enterprise application -- elk enterprise log analysis system
- CVPR 2022 | 神经辐射场几何编辑方法NeRF-Editing
- Stochastic dynamic economic dispatching model of wind power (realized by matlab code)
- 基于FPGA的VGA协议实现
- Check box select all or deselect all
- No delay / no delay live video instance effect cases
- 代码对比工具,我就用这6个
- cadence SPB17.4 - group operation(add to group, view group list, delete group)
- 论文导读 | 机器学习在数据库基数估计中的应用
- Methods and benefits of creating indexes for MySQL databases
猜你喜欢

可变参表达式

Introduction to long connection

Easyexcel configuration and Application

JDBC connection pool is used for batch import. 5million data are run each time, but various problems will occur in the middle

Operating instructions for communication between RS485 (Modbus RTU) industrial RFID reader ck-fr03-a01 and PLC Mitsubishi fx5u

面试造航母,入职拧螺丝,工资...

JSP implementation of performance appraisal system for bank counter business

基于FPGA的VGA协议实现

高比例风电电力系统储能运行及配置分析(Matlab实现)

LNMP deployment
随机推荐
Implementation of VGA protocol based on FPGA
SQL数据查询之单表查询
Redis uses 10 tips, please accept!
Vi LXD deployment of lab server for development records
JSTL 自定义标签
JSP implementation of performance appraisal system for bank counter business
[acwing 237. program automatic analysis] parallel search + discretization
AGV机器人RFID传感器CK-G06A与西门子1200PLC应用手册
Just after the college entrance examination, I was confused and didn't know what to do? Tell me what I think
小米9线刷ROM
使用华为HECS云服务器打造Telegraf+Influxdb+Grafana 监控系统【华为云至简致远】
Hashicopy之nomad应用编排方案06(配置task)
Is the securities account opened in qiniu safe? How to apply for a low commission stock account?
Private collection project practice sharing [Yugong series] February 2022 wechat applet -app Other properties of JSON configuration properties
Tp6 whoops based exception takeover (beautiful interface)
About PHP: the original deployment environment written by PHP is deployed in phpstudy, PHP + MySQL + Apache. However, the computer must be turned on every time
JSTL custom label
复选框 全选or取消全选
2022.2.26 library management system 2 - module 2: reader management system
Installation and use of Anaconda