03web技术讲解

简介: 03web技术讲解

一、Web 工作机制

为什么学习这节课 我们学习渗透测试这门课程,主要针对的 Web 应用,所以对 Web 架构需要一定的了解


1.1 网页、网站


我么可通过浏览器上网看到精美的页面,一般都是经过浏览器渲染的.html 页面,其中包含 css 等前端技术。多个网页的集合就是网站。


1.2Web 容器


Web 容器,也叫 Web 服务器,主要提供 Web 服务,也就是常说的 HTTP 服务。 常见的 Web 容器有:Apache/IIS/Nginx 等。


1.3 静态页面


静态页面,都是些.html 文件,是纯文本文件。这些文件中包含 html 代码。 HTML(HyperText Markup Language,超文本标记语言),在浏览器中解释运行。


1.4 中间件服务器


以上这种,只能单向给用户战术信息。随着 Web 的发展,信息要双向流动,产生了交互的 需求,也就是动态网页的概念;所谓动态就是利用 flash、Php、asp、Java 等技术在网页中 嵌入一些可以运行的脚本,用户浏览器在解释页面时,遇到脚本就启动运行它。 脚本的使用让 Web 服务模式有了双向交流的能力,Web 服务器模式也可以像传统的软件 一样进行各种事务的处理,如编辑文件、利息计算、提交表单等,Web 架构的适用面大大 扩展。 这些脚本可以嵌入到页面中,如 JS 等。也可以以文件的形式单独存放在 Web 服务器的目 录里,如.asp、.php、jsp 文件等。这样功能性的脚本越来越多,形成常用的工具包,单独管 理,Web 业务开发时,直接使用就可以了,这就是中间件服务器,它实际上时 Web 服务器 处理能力的扩展。 weblogic、jboss


1.5 数据库的出现


静态网页与脚本都是事先设计好的,一般不经常改动,但网站上的很多内容需要经常更新, 将这些变动的数据放在静态网页的程序中显然不合适,传统的办法是数据与程序分离,采用 的专业的数据库。


Web 开发者在 Web 服务器后边增加了一个数据库服务器,这些经常变动的数据被存进数 据库,可以随时更新。当用户请求页面时,脚本根据用户请求的页面,涉及到动态数据的地 方,利用 SQL 数据库语言,从数据中读取最新的数据,生产“完整”页面,最后送给用户。


二、HTTP 协议概述

HTTP(HyperText Transfer Protocol),超文本传输协议,是传递消息的规范和要求。

2.1 概述

1990 年提出的,当前版本 1.1。

HTTP 是用来将 html 文档从 Web 服务器传输到 Web 浏览器。

是一个请求和响应的协议。客户端发出请求,服务器端对请求给出回应。 HTTP 使用可靠的 TCP 连接,默认端口 80


2.2 特点

支持浏览器/服务器模式

简单快速:浏览器向服务器提出请求时,只需要传送请求方法和请求路径

灵活:HTTP 运行传输任意类型的数据对象

.html 纯文本

.jpg 图片

.mp3 音频

HTTP 协议是无状态的协议


2.3URL

统一资源定位符(网址),用来告诉 Web 容器,浏览器所请求的资源(文件)的路径。

例如:http://localhost/test/requests.php?id=32 Schema://login:password@adress:port/path/to/resource/?query_string#fragment

Port 80

Login 用户名

Password 密码 匿名访问时,默认没有用户名和密码

Fragment 锚点 实现页面内定位

url 编码 URL 只允许出现的字符是有限制的,URL 中 path 开始允许直接出现[A-Z][a-z][0-9],半角

减号(-)、下划线句点(.)、波浪号(~)。

其他字符均会被百分号编码(包括空格)

例如:

%23

空格 %20

原理:%+ASCII 码十六进制形式

在进行编程的时候,会[+] 代替空格。

注意:不要对中文进行 url 编码

报文分析工具

1、F12

2、wireshark

3、fiddler

4、Burp suite


三、HTTP 报文分析

Web 应用的所有通信的消息都要遵守 HTTP 协议的规范和要求。


3.1REQUEST

请求报文,如下

GET /php/test/get.php HTTP/1.1

Host: 192.168.1.136

User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:75.0) Gecko/20100101

Firefox/75.0

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8

Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2

Accept-Encoding: gzip, deflate

Referer: http://192.168.1.136/php/test/

Connection: close

Upgrade-Insecure-Requests: 1

Cache-Control: max-age=0

HTTP 请求由请求行、请求头、请求正文三部分组成

1、请求行:方法,资源路径,协议/版本

方法:GET

资源路径:/php/test/get.php

协议/版本:HTTP/1.1

2、请求头

从请求报文第二行开始到第一个空行为止的内容。其中包含很多字段

3、请求正文

以上方法没有请求正文,后面会看到


3.2 请求方法


GET

最常用的方法,通常用户请求服务器发送的某个资源。

POST

可以向服务器提交参数以及表单,包括文件流等

HEAD

与 GET 方法类似,但在服务器响应中只返回首部

PUT

与 GET 从服务器读取文档相反,PUT 方法会向服务器写入文档

TRACE

回显浏览器的请求

OPTIONS

请求 Web 服务器告知其支持的各种功能

DELETE

请求服务器删除请求 URL 所指定的资源


3.3 实验


1、使用 telnet 模式浏览器发送 HTTP 请求

Telnet 192.168.1.136 80

GET /php/test/get.php HTTP/1.1

Host: 192.168.1.136

注意:进入 telnet 后,按 ctrl+]键,开启 telnet 的回显,然后按回车键

Telnet www.baidu.com 80

GET / HTTP/1.1

Host: www.baidu.com

2、利用 telnet 传送 GET 参数

GET /php/test/get.php?name=AJEST&pwd=123456 HTTP/1.1

Host:192.168.1.136

3、利用 telnet 模拟 POST,请求传递参数

POST /php/test/post.php?http://192.168.1.136/php/test/post.php HTTP/1.1

Host: 192.168.1.136

a9a4e7b0a9f04099be73c429349ae123.png


Content-Type: application/x-www-form-urlencoded

Content-Length: 19

name=GGG&pwd=123456

a7848e9dc9e14d5b895a70fc985ffd46.png


4、利用 OPTIONS 方法测试 Web 服务器允许的 HTTP 请求

OPTIONS / HTTP/1.1

Host: 192.168.1.136

get.php

<?php str=$_GET; var_dump($str); $ ?>

post.php

<?php str=$_POST; var_dump($str); ?>

3.4 主要字段


Host

主要用于指定被请求资源的 Internet 主机和端口号

User-Agent

浏览器指纹

Referer

包含一个 URL,代表当前的 URL 的上一个 URL

Cookie

记录请求者的身份认证信息

Accept-Charset

用户指定客户端接受的字符集

Content-Type

用于向接收方指示实体的介质类型(数据类型)

Content-Length

用于指明实体正文的长度,以字节的方式存储的十进制数字来表示

Last-Modified

用于指示资源的最后修改时间和日期


3.5RESPONSE


响应报文如下:

HTTP/1.1 200 OK

Date: Sat, 25 Apr 2020 09:50:59 GMT

Server: Apache/2.4.23 (Win32) OpenSSL/1.0.2j PHP/5.4.45

X-Powered-By: PHP/5.4.45

Content-Length: 13

Connection: close

Content-Type: text/html

array(0) {

}

响应报文由状态行(响应行)、响应头、响应正文三部分组成。


1、状态行:协议/版本,状态代码,描述短语

协议/版本:HTTP/1.1

状态代码:200

描述短语:OK

2、响应报头

第二行开始到第一个空行为止的所有内容,其中包含了关于 HTTP 响应的重要字段。

3、响应正文

服务器返回资源的内容,即浏览器接收到的 HTML 代码。


状态码

100~199

信息性状态码

200~299

成功状态码

300~399

重定向状态码

400~499

客户端错误状态码

500~599

服务器错误状态码


主要字段

Server

服务器指纹

Set-Cookie

向浏览器端设置 Cookie

Last-Modified

服务器通过这个头信息告诉浏览器,资源的最后修改时间

Content-Length

请求正文长度

Location

重定向目标页面

Refresh

服务器通过 Refresh 头告诉浏览器定时刷新浏览器


四、同源策略

同源策略是禁止 javascript 进行跨域访问的安全策略。它也是浏览器沙盒环境所提供的一项

制约。浏览器可以同时处理多个网站的内容,其典型方法为使用标签或 iframe 等。


4.1 同源策略的条件

URL 的主机(FQDN:Fully Qualified Domain Name 全程域名)一致

Schema 一致

端口号一致

同源策略的保护对象不仅仅时 iframe 内文档。比如实现 Ajax 时所使用的 XMLHttpRequest

对象能够访问的 URL 也受到了同源策略的限制。


4.2 同源策略探究

准备两个页面

index.html

iframe name=“iframe1” width=“300”

height="80"src=http://192.168.1.136/sop/iframe.html>

<input type=“button” οnclick=“go()” value=" 密码: ">

iframe.html

iframe 的内层

密码

这里我们使用我们服务器的浏览器测试这个实验(因为我们要使用不同的两个 URL 来访问

我们的网页)

我们用指定的 IP 访问,可以正常读取

493e2ab2fae545b3b693edee9ebdb6d9.png


但是当我们使用我们本机的回环地址去访问时,打开页面,无法读取(这就是由同源策略限


制,无法访问内层 iframe)

4ee63dc6e36241fbaeea267c928f5354.png

目录
相关文章
|
28天前
|
存储 安全 关系型数据库
后端技术:构建高效稳定的现代Web应用
【10月更文挑战第5天】后端技术:构建高效稳定的现代Web应用
48 1
|
2月前
|
SQL 缓存 搜索推荐
后端技术在现代Web开发中的应用与挑战
本文将深入探讨后端技术在现代Web开发中的重要性,涵盖从基础架构到性能优化的多个方面。通过分析当前主流后端技术的优缺点,并提供一些实用的解决方案和建议,帮助开发者更好地应对日常开发中的挑战。
52 1
|
1月前
|
缓存 前端开发 JavaScript
前端技术探索:构建高效、响应式Web应用的秘诀
前端技术探索:构建高效、响应式Web应用的秘诀
54 0
|
5天前
|
SQL 负载均衡 安全
安全至上:Web应用防火墙技术深度剖析与实战
【10月更文挑战第29天】在数字化时代,Web应用防火墙(WAF)成为保护Web应用免受攻击的关键技术。本文深入解析WAF的工作原理和核心组件,如Envoy和Coraza,并提供实战指南,涵盖动态加载规则、集成威胁情报、高可用性配置等内容,帮助开发者和安全专家构建更安全的Web环境。
16 1
|
8天前
|
负载均衡 监控 算法
论负载均衡技术在Web系统中的应用
【11月更文挑战第4天】在当今高并发的互联网环境中,负载均衡技术已经成为提升Web系统性能不可或缺的一环。通过有效地将请求分发到多个服务器上,负载均衡不仅能够提高系统的响应速度和处理能力,还能增强系统的可扩展性和稳定性。本文将结合我参与的一个实际软件项目,从项目概述、负载均衡算法原理以及实际应用三个方面,深入探讨负载均衡技术在Web系统中的应用。
36 2
|
1月前
|
安全 网络协议 算法
HTTPS网络通信协议揭秘:WEB网站安全的关键技术
HTTPS网络通信协议揭秘:WEB网站安全的关键技术
140 4
HTTPS网络通信协议揭秘:WEB网站安全的关键技术
|
19天前
|
人工智能 前端开发
2024 川渝 Web 前端开发技术交流会「互联」:等你来报名!
2024 川渝 Web 前端开发技术交流会「互联」:等你来报名!
2024 川渝 Web 前端开发技术交流会「互联」:等你来报名!
|
20天前
|
存储 安全 数据库
后端技术在现代Web开发中的实践与创新
【10月更文挑战第13天】 本文将深入探讨后端技术在现代Web开发中的重要性,通过实际案例分析展示如何利用先进的后端技术提升用户体验和系统性能。我们将从基础架构设计、数据库优化、安全性保障等方面展开讨论,为读者提供清晰的指导和实用的技巧。无论是新手开发者还是经验丰富的技术人员,都能从中获得启发和帮助。
30 2
|
21天前
|
机器学习/深度学习 移动开发 JavaScript
Web实时通信的学习之旅:SSE(Server-Sent Events)的技术详解及简单示例演示
Web实时通信的学习之旅:SSE(Server-Sent Events)的技术详解及简单示例演示
100 0
|
23天前
|
自然语言处理 Cloud Native 数据安全/隐私保护
后端技术在现代Web开发中的实践与创新
本文探讨了后端技术在现代Web开发中的重要性及其应用。通过分析当前流行的后端框架和开发模式,揭示了如何利用这些技术来构建高效、可扩展的Web应用程序。同时,文章也讨论了未来后端技术的发展趋势,为开发者提供了一些启示。