网络安全练气篇——Web与Http基础

目录

Web安全

一、 大纲

二、 Web 简介

1、什么是 WEB

2、WEB 发展史

静态页面

多媒体阶段

CGI 阶段

AJAX

MVC

RESTful

云服务

3、WEB 工作方式

进一步讲解

什么是 URL

三、 HTTP 简介

HTTP 请求报文:

请求方法:

请求头部:(常见的请求头)

响应状态码:

响应头部:

什么是 cookie


Web安全

一、 大纲

二、 Web 简介

1、什么是 WEB

既然我们要学习 Web 安全,当然要简单的了解什么是 Web,Web 与现在与我们生

活息息相关,上个网站浏览新闻,看个视频,或者说……(咳咳)。这其中涉及到

几个基本的点,从通信,会接触到 URL,到协议,会接触到 HTTP,再到前后端的

概念,前端即 HTML,CSS,JavaScript,三剑客。后端,即处理脚本语言,比如

PHP,JAVA,python,SQL 等等,再细致的分还能分为很多,这是一个庞大的链

路,我们先从简单的学起就好啦。

那什么是 Web 呢?

WEB,就是所谓的 WWW 全球广域网(World Wide Web),也就是我们常说的万维

网。

它是一种基于超文本和 HTTP 的、全球性的、动态交互的、跨平台的分布式图形

信息系统。是建立在 Internet 上的一种网络服务,为浏览者在 Internet 上查找

和浏览信息提供了图形化的、易于访问的直观界面,其中的文档及超级链接将

Internet 上的信息节点组织成一个互为关联的网状结构。

上面说了这些比较官方,根据实际生活来看,就无非是可以与人交互的网页,现

在科技真是越来越强大。Web 也有他的发展史,下一段会说到,发展到现在与人

交互,处理各种事物,各种管理平台也应用而生,因此也带了了很多的风险,具

体风险都有哪些危害,咱们的课程都会讲到,现在我们一步步来。其次,对于什么是 Web 也没有特别细致要讲解的,大家都能理解这个简单概念。

毕竟现在与我们生活息息相关。都会接触到,并且都有用到。

2、WEB 发展史

静态页面

在互联网最初开始的时候,Web 网站的主要内容是静态的,由文字和图片组成,

制作和表现形式也是以表格为主。当时的用户行为也非常简单,仅仅是浏览网页。

多媒体阶段

随着技术的不断发展,音频、视频、Flash 等多媒体技术诞生了。多媒体的加入

使得网页变得更加生动形象,网页上的交互也给用户带来了更好的体验。

CGI 阶段

渐渐的,多媒体已经不能满足人们的请求,于是 CGI(Common Gateway Interface)

应运而生。CGI 定义了 Web 服务器与外部应用程序之间的通信接口标准,因此 Web

服务器可以通过 CGI 执行外部程序,让外部程序根据 Web 请求内容生成动态的内

容。

在这个时候,各种编程语言如 PHP/ASP/JSP 也逐渐加入市场,基于这些语言可以

实现更加模块化的、功能更强大的应用程序。

AJAX

在开始的时候,用户提交整个表单后才能获取结果,用户体验极差。于是 Ajax

(Asynchronous Javascript And XML)技术逐渐流行起来,它使得应用在不更

新整个页面的前提下也可以获得或更新数据。这使得 Web 应用程序更为迅捷地回

应用户动作,并避免了在网络上发送那些没有改变的信息。

MVC

随着 Web 应用开发越来越标准化,出现了 MVC 等思想。MVC 是 Model/View/Control

的缩写,Model 用于封装数据和数据处理方法,视图 View 是数据的 HTML 展现,

控制器 Controller 负责响应请求,协调 Model 和 View。Model,View 和 Controller 的分开,是一种典型的关注点分离的思想,使得代

码复用性和组织性更好,Web 应用的配置性和灵活性也越来越好。而数据访问也

逐渐通过面向对象的方式来替代直接的 SQL 访问,出现了 ORM(Object Relation

Mapping)的概念。

除了 MVC,类似的设计思想还有 MVP,MVVM 等。

RESTful

在 CGI 时期,前后端通常是没有做严格区分的,随着解耦和的需求不断增加,前

后端的概念开始变得清晰。前端主要指网站前台部分,运行在 PC 端、移动端等

浏览器上展现给用户浏览的网页,由 HTML5、CSS3、JavaScript 组成。后端主要

指网站的逻辑部分,涉及数据的增删改查等。

此时,REST(Representation State Transformation)逐渐成为一种流行的 Web

架构风格。

REST 鼓励基于 URL 来组织系统功能,充分利用 HTTP 本身的语义,而不是仅仅将

HTTP 作为一种远程数据传输协议。

云服务

随着时间的发展,Web 的架构越发复杂,负载均衡、数据库分表、异地容灾、缓

存、CDN、消息队列等技术开始应用,增加了 Web 开发和运维的复杂度。同时云

服务开始逐渐发展,部署环境容器化,各个功能拆成微服务或是 Serverless 的

架构。

3、WEB 工作方式

先举个简单的例子:

有一天你和你的小女朋友来到了一家餐厅,桌子上放着餐单,上面各式各样的菜

品,什么土豆炖牛肉,什么宫保鸡丁啦,都是你们爱吃的菜,这时服务员过来,

问两位需要点什么菜品,你们随机点了这两个爱吃的菜,服务员记录在了一张纸

上,大步走向后厨房。不久,菜品做好了,服务员给你端上了美味佳肴,你们大

快朵颐,饭后,你们决定溜溜,然后……(就该各回各家了)

在上面什么是 Web 中,简单说明了 Web 的构造,大致分为前端和后端,协议使用

的是 HTTP,通信方法是下面会说到的,使用的是 URL。

根据这个例子进一步说明:

桌子上的餐单即为一个网页,一个精心构造的前端页面,上面的菜品即为一个个

超链接,你选择了土豆炖牛肉,这时服务员通过 HTTP 协议打包好你的请求,通

过 URL 去访问你需要的这份资源,然后来到了后端,就是后厨房嘛,一般这就是

网站的服务器所在地,厨师也就是说服务器奋力的给你做好这份菜品,再通过服

务员送到了你的餐桌上,即呈现在了你所看到的网页上。

我举了个通俗的例子,目的是便于大家理解。

进一步讲解

下面我们详细介绍几个概念:

什么是 URL

URL 即为统一资源定位符(Uniform Resource Locator),就是我们平时所用到

的 URL 连接,比如 www.baidu.com,www.bing.com,这些都是 URL 地址,便于我

们记忆,不然一堆 IP 地址,记到什么时候去。但现在 URL 地址不仅仅是方便记

录的原因了,一般厂商都会使用 CDN 节点,很难知道他们服务器的真实 IP 地址,

如果你知道了,对于他们来说是一个很大的风险。所以在之后渗透测试时,信息

收集到真实的 IP 地址也是一个关键的地方。

URL 标准格式:

schema://host[:port#]/path/.../[?query-string][#anchor]

schema:协议类型

host:服务器地址

port:端口号

path:路径

?query-string:查询语句

#anchor:页面锚点

Schema 协议类型一般就是我们常见的 http 或者 https,host 是服务器地址,一

般就是 URL 地址,如果你知道真实的 IP 地址,也可以打开目标网页,port 为端

口号,一般都是 80 端口,是可以省略掉的,使用的是 http 协议,而 https 协议

使用的 443 端口,path 路径是目标服务器存放该页面的相对路径,?

query-string 是你要查询的语句,#anchor 是页面的某个锚点,一般较少见。

举个例子,大家可以自己分析下:(或者多观察下 URL 链接)

https://cn.bing.com/search?q=7089bat&qs=n&form=QBLH&sp=-1&pq=7089bat&

sc=0-7&sk=&cvid=5359B320893A4CDCA9A0BDD31D728BC0

什么是 DNS 服务器

DNS(域名系统,Domain Name System),它作为将域名和 IP 地址相互映射的一

个分布式数据库,能够使人更方便地访问互联网。通俗来说,这就是一个大型的

数据库,里面存放着 URL 以及与其对应的 IP 地址,类比一下就好像图书馆的索

引一样,你根据这个索引就可以找到这本书。

这时我们总结一下,

加上我们平时上网的过程,来进一步加深理解:

首先我们会用浏览器访问各种资源,浏览器是客户端角色,当你输入 URL 时,浏

览器会首先请求 DNS 服务器,DNS 根据你请求的 URL 返回对应的 IP 地址,接下

来,浏览器会带着你请求的信息去访问该 IP 的服务器,来处理你的请求,当服

务器接收到了你的请求后,会根据 HTTP 协议所带的数据,来对你的访问进行处

理,这个处理就是后端过程,可能使用的是 PHP,可能是 JAVA 语言,或者其他,处理完成之后再将这些信息返回给客户端,客户端根据返回的数据进行呈现,呈

现的网页即为前端,其中包括了 HTML,CSS,JavaScript,基本元素,一个丰富的

页面就呈现在了你的眼前。

下面这个图,是 Bing 请求的基本流程:

三、 HTTP 简介

HTTP(HyperText Transfer Protocol,超文本传输协议),是因特网上应用最

为广泛的一种网络传输协议,所有的 WWW 文件都必须遵守这个标准。

HTTP 是一个基于 TCP/IP 通信协议来传递数据(HTML 文件, 图片文件, 查询结

果等)。

HTTP 请求报文:

完整的 HTTP 请求包含以下内容,请求方法一般是 GET 和 POST,URL 即你请求的

地址,协议版本一般都是 HTTP/1.1,然后配合着请求头,来访问你请求的资源,

请求头有通用的,也有厂家自定义的。如果是 POST 请求,会携带请求数据。

GET 请求的数据会在 URL 处携带查询,即我们前面说到的 ?query-string 部分,

POST 只不过把查询部分放在了请求报文中,即下面请求数据的部分,这样做的

目的是,较为安全的保障所请求的数据。GET 所请求的数据在 URL 中,一般大家

都能看到,但是现在不管哪种请求,都或多或少的加入了编码,这样数据不进行

特定的方式解码,是看不到具体数据的。

请求方法:

GET:请求指定页面信息,并返回主体,数据插入进 URL 中进行传输。

POST:向指定资源提交数据进行请求,数据被放在请求数据体中传输。

HEAD:类似 GET 请求,但只获取头部信息,无响应体。

PUT:将传输数据取代指定文档传输。

DELETE:请求服务器删除指定页面。

CONNECT:与代理服务器可以进行管道方式连接。OPTIONS:查询针对请求 URL 指定资源支持的方法。

TRACE:可以对请求消息的传输路径追踪。

MOVE:请求服务器将指定的页面移动到另一个网络地址上。

请求头部:(常见的请求头)

Hsot:请求资源的服务器

User-Agent:客户端程序的信息

If-Match:比较实体标记(Etag)

If-Modified-Since:比较资源更新的时间

Authorization:web 认证信息

Accept:用户代理可处理的媒体类型

Accept-Charset:优先的字符集

Accept-Encoding:优先的内容编码

Accept-Language:优先的语言(自然语言)

实际一个小例子:

GET 请求:

POST 请求 HTTP 响应报文:

响应报文组成:

第一行:HTTP 协议版本 + 状态码 + 原因短语

下面若干行:可选的响应首部信息

空行

剩下的消息:为响应的信息

一个例子:

响应状态码:

1xx:信息,服务器收到请求,需要请求者继续执行相关操作。

2xx:成功,操作被成功接受并处理。

3xx:重定向,需要进行附加操作以完成请求。

4xx:客户端错误,请求中存在语法错误,服务器无法处理请求。

5xx:服务器错误,服务器在处理请求的过程发生了错误。常见的状态码含义:

200 OK:表示客户端发来的请求在服务器端被正常处理了。

301 Not Modified:表示客户端附带条件的请求,未满足条件。

400 Bad Request:表示请求报文中存在语法错误。

401 Unauthorized:表示发送的请求需要有通过 HTTP 认证的信息。

403 Forbidden:表明对请求资源的访问被服务器拒绝了。

404 Not Found:服务器无法找到请求的资源。

500 Internal Server Error:表明服务器端在执行请求时发生了错误。

503 Service Unavailable:表明服务器暂时处于超负载或进行停机维护。

响应头部:

Server:服务器的信息

Location:状态码出现 3xx 是一般会配合该头部指向重定向的地址。

Set-cookie:服务器想用户发放的表示凭证。

HttpOnly:使 JavaScript 脚本无法获取 cookie,防止 xss 攻击。

X-Frame-Options:控制网站内容在其他 web 网站的 Frame 标签内的显示问

题。防止点击劫持攻击;

DENY:拒绝

SAMEORGIN:仅同源域名下的页面匹配时许可

X-Powered-By:可以知道 web 后端语言(但是可以修改)Cookie

什么是 cookie

首先我们需要知道的是,HTTP 是无状态协议,你单纯从网络上请求数据,服务

器端并不知道是谁请求的数据。这时 Cookie 就出现了,它的作用是给每个客户

端颁发一个通行证,这样服务端就能确认目标身份了。Cookie 不单单是记录身

份,更多是记录访问者的一些信息,不然服务器一天接收那么多请求,再返回请

求,他哪知道哪个是你,你又请求了哪个信息嘛。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/30756.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

人工智能大模型之开源大语言模型汇总(国内外开源项目模型汇总)

开源大语言模型完整列表 Large Language Model (LLM) 即大规模语言模型,是一种基于深度学习的自然语言处理模型,它能够学习到自然语言的语法和语义,从而可以生成人类可读的文本。 所谓"语言模型",就是只用来处理语言文…

一文带你理清同源和跨域

1、概述 前后端数据交互经常会碰到请求跨域,什么是跨域,为什么需要跨域,以及常用有哪几种跨域方式,这是本文要探讨的内容。 同源策略(英文全称 Same origin policy)是浏览器提供的一个安全功能。同源策略限制了从同一个源加载的…

零撸包小游戏app对接广告变现开发

零撸包小游戏app对接广告变现开发是一个结合了游戏开发和广告变现策略的综合项目。以下是关于此项目开发的关键步骤和要点: 1. 市场分析与定位 首先,进行深入的市场调研,了解目标用户的特点、兴趣及游戏习惯,以及竞争对手的情况…

C# Practice for Fianl 0x00

Prac1 描述 大家都知道斐波那契数列,现在要求输入一个正整数 n ,请你输出斐波那契数列的第 n 项。 斐波那契数列是一个满足 fib(x)={1fib(x−1)+fib(x−2)​x=1,2x>2​ 的数列 数据范围:1≤n≤40 要求:空间复杂度 O(1),时间复杂度 O(n) ,本题也有时间复杂度 O(lo…

SN74HC14+陶瓷振子做振荡器的试验初步

面包板搭建,4.5V电池供电。 注意我用杜邦线插1脚并缠绕到小频谱的天线上面,如果直接用杜邦线转sma。请先过衰减器。 本想试验一下465khz用SN74HC14做振荡器,实验了很多次,无法起振。 用1M,4M的也无法起振,…

JavaSE 面向对象程序设计 正则表达式

正则表达式 正则表达式(Regular Expression,简称Regex)是用于匹配文本中模式的字符串表达式。它由普通字符(例如字母、数字)和特殊字符(称为元字符)组成,可以非常灵活地定义搜索模式…

[问题记录]Qt QGraphicsItem 移动时出现残影

目录 1.问题现象 2.问题原因 3.修改方案 1.问题现象 自定义 QGraphicsItem 时,绘制rect,对象移动时出现残影。 2.问题原因 直接原因是view未刷新的问题,所以网上有人使用方案 setViewportUpdateMode(QGraphicsView::FullViewportUpdate…

Linux下更新curl版本

一、前景 由于低版本的curl存在一定的漏洞,会对我们的服务器安全造成问题,所以,我们需要将curl由低版本安装到高版本。 二、步骤 1、首先检测服务器安装的curl版本 curl --version 2、查看服务器安装的curl的安装包 rpm -qa curl 3、卸载旧…

【HarmonyOS NEXT】鸿蒙App开发抓包指导-以Charles工具为例

本文档针对鸿蒙单框架设备开发调测时的抓包方案进行整体介绍(与鸿蒙设备强相关的步骤会做详细陈述),以Charles抓包工具为例,具体抓包步骤如下: 手机镜像要求:2.0.0.66(SP60DEVC00E66R4P1)及以上 大家容易忽…

LabVIEW电动汽车核心部件检测系统

LabVIEW开发的电动汽车核心部件检测系统,通过硬件接入板和数据采集卡实现信号采集和分析。系统具备智能诊断、模块化设计和用户友好的特点,能够快速、精确地定位故障,提高电动汽车的维护效率和可靠性,支持新能源汽车市场的快速发展…

大数据助力电商发展||电商API接口接入

伴随互联网尤其是移动互联网的高速发展,电子商务已经成为人们生活中不可或缺的一部分,人们的购物理念和消费模式正在发生颠覆性的转变。基于天然的数据优势,电子商务平台利用大数据计算技术不断实施数据的累积、分析和处理,消费者…

android room 多表查询

用一个data class来接收多表查的结果 Epc.kt 表1 Entity(tableName "epc",indices [Index(value ["epcId"], unique true)] ) data class Epc(/*** ID*/PrimaryKey(autoGenerate true)val _id: Int 0,/*** 企业编码*/ColumnInfo(name "compa…

windows pyenv-win:pyenv 下载过慢

先到官网下载指定版本的 exe 文件 Python Releases for Windows | Python.org 根据自己电脑的 下载 32 或者 64 下载完成后将 exe 放入 install_cache 再到 powershell 中执行安装指令 pyenv install 3.12.4

八、C#运算符

C#运算符 晕杜甫是一种告诉编辑器执行特定的数学或逻辑操作的符号。C#有丰富的内置运算符,分类如下: 算术运算符关系运算符逻辑运算符位运算符赋值运算符其他运算符 算术运算符 下表显示了 C# 支持的所有算术运算符。假设变量 A 的值为 10&#xff0c…

带你学习Mybatis之拦截器

mybatis拦截器 mybatis拦截器也叫做插件,mybatis允许开发者自定义拦截器对SQL语句执行过程中的某一个点进行拦截。默认mybatis允许拦截Mybatis中的四大核心对象:Executor中的方法、ParameterHandler的方法、ResultSetHandler的方法以及StatementHandler中的方法 Exe…

备忘录文字颜色怎么改 备忘录改变字体颜色方法

在日常的工作和生活中,备忘录已经成为我不可或缺的好帮手。但是,面对满满当当的备忘录,有时候不同的任务和信息都混在一起,让人眼花缭乱。我常常想,如果能改变备忘录中的文字颜色,用以区分不同类别的事项&a…

高清无字幕搞笑视频素材去哪里找哪里下载的?

在制作搞笑视频时,优质的无字幕视频素材对于提升作品的趣味性和吸引力至关重要。今天,我将为大家介绍一系列高清视频素材网站,这些网站不仅资源丰富、质量上乘,还能助你一臂之力,迅速提升视频的创意和品质。首先要推荐…

龙迅LT9611UXC 2 PORT MIPIDSI/CSI转HDMI 2.1,支持音频IIS/SPDIF输入,支持标准4K60HZ输出

龙迅LT9611UXC描述: LT9611UXC是一个高性能的MIPI DSI/CSI到HDMI2.0转换器。MIPI DSI/CSI输入具有可配置的单端口或双端口,1高速时钟通道和1~4高速数据通道,最大2Gbps/通道,可支持高达16Gbps的总带宽。LT9611UXC支持突发模式DSI视…

第二证券股市资讯:股票中什么叫龙头?

龙头,也就是龙头股,指的是某一职业中有必定影响力和号召力的股票,龙头股的涨跌通常对其他同职业板块股票的涨跌有必定演示和引导作用,是一种风向标一般的存在。龙头股的技能面表现和成交量都会比同时刻的大盘和地块要强。 具体分…

网络技术 - 服务端响应头信息 Transfer-Encoding

Transfer-Encoding: chunked 是 HTTP/1.1 协议中定义的一种数据传输方式,它允许 HTTP 响应数据分成多个部分(即“块”)发送给客户端。以下是关于 Transfer-Encoding: chunked 的详细解释: 作用和目的 动态内容传输:对于动态生成的内容,服务器无法提前知道整个响应数据的…