url

发布时间 2023-04-18 17:58:26作者: 挖洞404

1、介绍

uri,uniform resource identifier统一资源标识符。用于标识资源视其与其他区分,包括url和isbn等方案。

url,uniform resource location统一资源定位符。属于uri的一个子集,用网络可访问的形式进行定位标识资源。

url的作用:

  • 作为超链接a的href属性,访问文件
  • 作为图片img的src属性,获取图片资源加载到本地
  • 作为form的action属性,提交数据到服务端
  • 作为超链接a的download属性,进行下载

2、组成

schema://username:password@host:port/path?query#fragment

(1)schema

协议,一般是指http或者https,但从url定义也可以用于ftp、file、ssh等

(2)username和password

用户名和密码,用于需要特殊验证身份的场景,一般没有遇到过,但是浏览器和服务器支持传递,作为无效信息

也可以没有password,只有username部分

这一块有时用于重定向漏洞欺骗和绕过

(3)host

主机,可以是域名,也可以是ip地址,还可以是localhost这样的名称。

(4)port

端口,如果是与协议匹配的默认端口,可以省略不写,http与80,https与443

(5)path

路径,几种情况:

  • 无,服务器会导向默认配置的页面,比如index.html
  • 文件结尾,可能是静态文件,也可能是动态文件
  • 路径结尾,指向服务器的处理接口

(6)query

一般参数,以&拼接键值对,以=拼接键和值

(7)fragment

哈希,用于url请求之后的页面定位,或者用于传递数据给请求之后的响应页面。

3、url编码

(1)编码方案

url中存在某些敏感字符作为其结构描述符,如果要表达敏感字符作为普通文本,需要进行转码,即url编码。

url编码是将字符转为utf-8,然后对每个字节前加%字符。

一般,会对url结构描述符、ascii无法直接表达的字符、以及超出ascii编码的字符进行转码,而其他是否转码均可。

(2)编码解码场景

编码过程发生在浏览器端,由浏览器主动进行,或者人为的处理。而服务端,即服务器容器会自动解码,开发者不需要考虑url解码。

编码需求存在于query部分,也存在于path部分。

form表单一般提交时,体部的数据也会进行url编码

4、http与url

请求行中会包含http指定url的path及query部分。

如果类似,http://www.baidu.com,则路径为空。

http请求中,不包含hash部分。

而主机名和端口由Host头部字段指定。

http协议不区分http/https,或者说只表示http。