【渗透测试-web安全】URL和HTTP协议
URL和HTTP协议
URL:Uniform Resource Locator(统一资源定位系统)
基本格式
底层协议(HTTP、HTTPS、FTP等) + :+ host(主机域名或IP) + 【:端口】(服务器端口,http默认80,https默认443) + 资源地址 + 【?get请求时的传送数据】+【#】
#是用来指导浏览器动作的,表示特定位置,浏览器执行时会将#号标记的内容拖动到可视位置,注意 # 对服务器端完全无用。
HTTP请求头
Accept |
浏览器可接受的MIME(多功能Internet邮件扩展)类型。 |
Accept-Charset |
浏览器可接受的字符集。 |
Accept-Encoding |
浏览器能够进行解码的数据编码方式,比如gzip。Servlet能够向支持gzip的浏览器返回经gzip编码的HTML页面。 |
Accept-Language |
浏览器所希望的语言种类,当服务器能够提供一种以上的语言版本时要用到。 |
Authorization |
授权信息,通常出现在对服务器发送的WWW-Authenticate头的应答中。 |
Connection |
表示是否需要持久连接。HTTP 1.1默认进行持久连接,当页面包含多个元素时,显著地减少下载所需要的时间。 |
Content-Length |
表示请求消息正文的长度。 |
Cookie |
这是最重要的请求头信息之一,访问权限控制码。 |
From |
请求发送者的email地址,由一些特殊的Web客户程序使用,浏览器不会用到它。 |
Host |
初始URL中的主机和端口。 |
If-Modified-Since |
只有当所请求的内容在指定的日期之后又经过修改才返回它,否则返回304“Not Modified”应答。 |
Pragma |
指定“no-cache”值表示服务器必须返回一个刷新后的文档,即使它是代理服务器而且已经有了页面的本地拷贝。 |
Referer |
包含一个URL,用户从该URL代表的页面出发访问当前请求的页面。 |
User-Agent |
浏览器类型,如果Servlet返回的内容与浏览器类型有关则该值非常有用。 |
HTTP响应头
Allow |
服务器支持哪些请求方法(如GET、POST等)。 |
Content-Encoding |
文档的编码(Encode)方法。只有在解码之后才可以得到Content-Type头指定的内容类型。 |
Content-Length |
表示内容长度。只有当浏览器使用持久HTTP连接时才需要这个数据。 |
Content-Type |
表示后面的文档属于什么MIME类型。Servlet默认为text/plain,但通常需要显式地指定为text/html。 |
Date |
当前的GMT时间。你可以用setDateHeader来设置这个头以避免转换时间格式的麻烦。 |
Expires |
应该在什么时候认为文档已经过期,从而不再缓存它? |
Last-Modified |
文档的最后改动时间。客户可以通过If-Modified-Since请求头提供一个日期,该请求将被视为一个条件GET。 |
Location |
表示客户应当到哪里去提取文档。Location通常不是直接设置的,而是通过HttpServletResponse的sendRedirect方法。 |
Refresh |
表示浏览器应该在多少时间之后刷新文档,以秒计。注意Refresh头不属于HTTP 1.1正式规范的一部分,而是一个扩展。 |
Server |
服务器名字。Servlet一般不设置这个值,而是由Web服务器自己设置。 |
Set-Cookie |
设置和页面关联的Cookie。应使用HttpServletResponse提供的专用方法addCookie。参见下文有关Cookie设置的讨论。 |
WWW-Authenticate |
客户应该在Authorization头中提供什么类型的授权信息?在包含401(Unauthorized)状态行的应答中这个头是必需的。 |
HTTP状态码
以1开头的状态码 |
信息,服务器收到请求,需要请求者继续执行操作。(如101:切换协议) |
以2开头的状态码 |
成功,操作被成功接收并处理。(如200:请求成功) |
以3开头的状态码 |
重定向,需要进一步的操作以完成请求。(如302:临时转移) |
以4开头的状态码 |
客户端错误,请求包含语法错误或无法完成请求。(如400:错误的请求) |
以5开头的状态码 |
服务器错误,服务器在处理请求的过程中发生了错误。(如500:服务器内部问题) |