当前位置: 首页 > news >正文

[Web安全架构] HTTP协议

文章目录

    • 前言
    • 1. HTTP
      • 1 . 1 协议特点
      • 1 . 2 URL
      • 1 . 3 Request请求报文
        • 1 . 3 .1 请求行
        • 1 . 3 .2 请求头
        • 1 . 3 .3 请求正文
        • 1 . 3 .4 常见传参方式
      • 1 . 4 Response响应报文
        • 1 . 4 .1 响应行
        • 1 . 4 .2 响应头
        • 1 . 4 .3 响应正文
    • 2. Web会话
      • 2 .1 Cookie
      • 2 .2 Session
      • 2 .3 固定会话攻击

前言

Web机制:客户端(用户、浏览器)+ 服务端(Web容器+中间件+数据库)。

1. HTTP

​ HTTP(Hyper Text Transfer Protocol,超文本传输协议)是浏览器与服务端之间的通信协议。

​ HTTP将HTML文档传输到Web历览器中进行访问。HTTP是一个请求和响应的协议,浏览器发出请求,服务端向请求做出回应

​ HTTP在网络中传输是以明文的形式,所以就会产生明文传输漏洞。为了解决这个问题,可以使用加强版的HTTPS协议,其在HTTP的基础上加上了一个安全套接字层SSL,但也会存在如 HTTPS 降级等漏洞问题。

​ HTTP 默认端口为80,HTTPS 默认端口为 443

1 . 1 协议特点

​ HTTP是一个请求和响应的协议,浏览器发出请求,服务端向请求做出回应。

  • 采用B/S架构模式(浏览器/服务器)
  • 协议是无状态的协议
  • 浏览器向服务器发出请求时,只需传输请求方法请求路径
  • 允许传输任意类型的数据对象

1 . 2 URL

​ URL(Uniform Resource Locator,统一资源定位符),是全球唯一的,用来告诉Web容器,浏览器请求资源的路径。

标准格式:

schema://login:password@address:port/path/to/resource/?query_string#fragment
URL参数说明实例
schema协议http
login:password用户名:密码
address服务器地址IP192.168.109.100
port端口号80
path/to/resource请求资源路径/cms/index.html
query_string请求参数name=dai
fragment锚点

例子:

# http
http://192.168.109.100/cms/
# ftp
ftp://ftpuser:ftppassword@192.168.109.100

URL编码:URL从Path开始只能出现A-Za-z0-9,-_.~其他符号都会被URL编码。

符号URL编码
#%23
%20
&%26
>%3e

1 . 3 Request请求报文

HTTP 请求报文由 请求行、请求头、请求正文 三部分组成。下面是一个完整的HTTP请求报文:

GET /cms/ HTTP/1.1
Host: 192.168.109.100
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.5359.125 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Referer: http://192.168.109.100/
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.9
Connection: close
1 . 3 .1 请求行

请求行是报文的第一行,由空格字符将其分为三部分,所以空格等字符不能随便出现。

GET /cms/ HTTP/1.1

说明:

列数说明例子
1请求方法GET
2资源路径/cms/
3协议版本HTTP/1.1

请求方法总结:

请求方法说明
GET用于请求服务器发送某个资源
POST提交表单或上传文件
HEAD请求资源,但只请求头部,不请求正文
OPTIONS测试服务器所支持的方法
TRACE回显浏览器的请求
PUT向服务器写入文档
DELETE请求服务器删除指定资源
1 . 3 .2 请求头

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

请求头字段说明
Host指定被请求资源的服务器地址和端口号
User-Agent浏览器信息,浏览器指纹
Referer当前URL的上一个URL
Cookie请求者的身份信息,类似于身份证
Content-Type指明实体的介质类型
Content-Length指明实体的正文长度
Authorization基本认证
1 . 3 .3 请求正文

一般为POST方法,第一个空行以后的内容。

1 . 3 .4 常见传参方式
  1. POST传参

    提交的参数放在请求正文中。

  2. GET传参

    向服务器提交的参数存放在URL中,例如 ?name=dai,向服务器传输多个参数用& 连接。

1 . 4 Response响应报文

响应报文由 响应行、响应头、响应报文 三部分组成。下面是一个完整的HTTP响应报文:

HTTP/1.1 200 OK
Date: Mon, 05 Aug 2024 02:43:55 GMT
Server: Apache/2.4.23 (Win32) OpenSSL/1.0.2j PHP/5.4.45
X-Powered-By: PHP/5.4.45
Content-Length: 7314
Connection: close
Content-Type: text/html; charset=utf-8<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
。。。。。
1 . 4 .1 响应行

响应报文的第一行。

HTTP/1.1 200 OK

说明:

列数说明例子
1协议版本HTTP/1.1
2响应状态码200
3描述短句OK

常见响应状态码:

状态码类型常见状态码
1XX信息性状态码
2XX成功状态码200、201
3XX重定向状态码302、304
4XX客户端错误状态码404、403
5XX服务端错误状态码500
1 . 4 .2 响应头

从响应报文第二行开始到第一个空行为止的内容。响应头包含了很多字段。

Date: Mon, 05 Aug 2024 02:43:55 GMT
Server: Apache/2.4.23 (Win32) OpenSSL/1.0.2j PHP/5.4.45
X-Powered-By: PHP/5.4.45
Content-Length: 7314
Connection: close
Content-Type: text/html; charset=utf-8

说明:

响应头字段说明
Date时间
ServerWeb服务器指纹
Refresh服务器端告知浏览器定时刷新浏览器
Content-Length正文长度
Connection连接
Content-Type响应正文的类型
Set-Cookie服务器向浏览器端写入Cookie信息
1 . 4 .3 响应正文

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

2. Web会话

​ 当我们进行网购时,选择商品、加入购物车、付款这一系列流程都是需要保持用户登录状态的。Web会话技术就是用来管理Web应用程序在多个页面和请求之间保持用户登录状态的一种技术。

​ HTTP协议本身是无状态的协议,所以HTTP协议不会记录会话状态,不同的请求之间是没有任何联系的。所以我们希望在浏览器与服务器交互的这个会话期间,服务器可以保持对浏览器会话的识别,也就是保持HTTP的状态。

2 .1 Cookie

​ Cookie(Cookies)技术就是我们用来辨别用户身份,进行会话跟踪而存储在本地终端上的一段文本。它由服务器在进行HTTP响应的时候发送给浏览器,每当浏览器向服务器发送请求的时候,它会自动将响应的Cookie包含在请求中,如果服务器识别了这个自动发送的Cookie信息,那么服务器就识别了会话。

2 .2 Session

​ Session 是一种可以保留更多信息在服务端的一种技术,服务器会为每一个客户端开辟一块内存空间(Session对象),客户端在发送请求的时候,都可以使用之间的Session。

2 .3 固定会话攻击

  1. 窃取

    F12,在命令行执行。

    alter(document.cookie)
    

在这里插入图片描述
在这里插入图片描述

  1. 获取到Cookie信息

    username=admin; userid=1; PHPSESSID=mcm25gpg74qp4gpn9sv54tj754
    
  2. 进行欺骗

    在没有Cookie信息的时候,我们将这三条命令(根据Cookie进行替换)在命令行执行,再次刷新就可以进去。

    document.cookie = "username=admin;";
    document.cookie = "userid=1;";
    document.cookie = "PHPSESSID=mcm25gpg74qp4gpn9sv54tj754";
    

相关文章:

[Web安全架构] HTTP协议

文章目录 前言1. HTTP1 . 1 协议特点1 . 2 URL1 . 3 Request请求报文1 . 3 .1 请求行1 . 3 .2 请求头1 . 3 .3 请求正文1 . 3 .4 常见传参方式 1 . 4 Response响应报文1 . 4 .1 响应行1 . 4 .2 响应头1 . 4 .3 响应正文 2. Web会话2 .1 Cookie2 .2 Session2 .3 固定会话攻击 前…...

mysql数据库之运算符

安全等于运算符(<=>) 这个操作符和 = 操作符执行相同的比较操作,不过<=>可以用来判断NULL值。在两个操作数均为NULL时,其返回值为1而不为NULL;而当一个操作数为NULL时,其返回值为0而不为NULL。 下面分别是 SELECT NULL <=>1 SELECT 1<=>0 SEL…...

Spark轨迹大数据高效处理_计算两经纬度点间的距离_使用Haversine formula公式

开发背景 接上文我求的两经纬度点之间的方位角&#xff0c;我的需求里还提到了要计算距离&#xff0c;当然这个距离也是为后面的需求做铺垫的&#xff0c;因此需要求两个经纬度电之间的距离。 不要妄想用勾股定理求出来&#xff0c;实际上距离的计算还是稍微复杂些。这里使用的…...

[C++] : std::copy_n

std::copy_n 是 C 标准库中的一个算法&#xff0c;用于将指定数量的元素从一个输入范围复制到一个输出范围。那这就提供了很灵活的用法了。下面我们举例说明。 语法 template< class InputIt, class Size, class OutputIt > OutputIt copy_n(InputIt first, Size count…...

centos上传工具

yum install lrzsz 安装完成之后 作用是 输入 rz 可以本地上传文件...

【C++】vector习题

一、杨辉三角 class Solution { public:vector<vector<int>> generate(int numRows) {} }; 这里给你一个vector<vector<int>>类型 也就是说vector中的各个数据&#xff0c;存的是各个不同的vector 思路&#xff1a;先给vector开空间&#xff0c;然后…...

Webpack Bundle Analysis:减少包体积的技巧

Webpack 是一个流行的 JavaScript 模块打包器&#xff0c;它能够将项目中各种类型的模块和资源打包成一个或多个 bundle。然而&#xff0c;随着项目的复杂性增加&#xff0c;bundle 的体积也会随之增大&#xff0c;这可能导致加载时间变长&#xff0c;影响用户体验。 Webpack …...

如何利用 ChatGPT 提高工作效率?

内容创作与总结&#xff1a; 写作辅助&#xff1a;可以帮助撰写文章、报告、邮件等各种文本&#xff0c;如为招商银行写宣传文案、写论文、写故事等。学习材料生成&#xff1a;能够生成学习材料&#xff0c;如摘要、抽认卡和测验&#xff0c;帮助学生复习和学习课程。评估和考核…...

使用 Redisson 、Redis实现分布式锁

Redisson 是基于 Redis 实现的一个 Java 框架&#xff0c;为开发者提供了更方便、更高级的 API 和功能。 Redisson 优点&#xff1a; 简单易用的 API&#xff1a;简化了 Redis 操作的代码编写&#xff0c;使开发者能够更专注于业务逻辑。 分布式特性支持&#xff1a;如分布式…...

Typro + PicGo 图床 + Docsify + GitHub Pages,玩转个人知识库搭建,写给小白的建站入门课

自动开了这个号以后&#xff0c;陆陆续续写了很多干货文章&#xff0c;一方面是可以帮助自己梳理思路&#xff0c;另一方面也方便日后查找相关内容。 但是&#xff0c;我想检索某个关键词是在之前哪篇文章写过的&#xff0c;就有点捉急了。CSDN 还好&#xff0c;可以检索到相关…...

多角度文字识别:应对复杂环境的智能解决方案

多角度文字识别&#xff08;Multi-Angle Text Recognition&#xff09;是指在不同视角、不同光照条件和不同背景下对文本进行识别的技术。这项技术在许多应用场景中都非常重要&#xff0c;例如自动驾驶、智能监控、文档数字化等。以下是关于多角度文字识别的一些关键点和摘要&a…...

笔记:简单介绍WPF中RenderTransform,LayoutTransform, VisualTransform区别

一、目的&#xff1a;简单介绍WPF中RenderTransform&#xff0c;LayoutTransform&#xff0c; VisualTransform区别 在 WPF 中&#xff0c;RenderTransform、LayoutTransform 和 VisualTransform 是用于对控件进行变换的属性&#xff0c;他们的主要区别是什么&#xff0c;如何选…...

【AI大模型】LangChain框架:示例选择器与输出解析器携手,编织NLP高效精准之网

文章目录 前言一、示例选择器1.介绍及应用2.自定义示例选择器案例&#xff1a;AI点评姓名 3.基于长度的示例选择器案例&#xff1a;对输入内容取反 4.基于最大边际相关性(MMR)的示例选择器案例&#xff1a;得到输入的反义词 5.基于n-gram重叠的示例选择器6.综合案例 二、输出解…...

苹果电脑玩的游戏有哪些 Mac电脑怎么玩Windows游戏 苹果电脑可以装模拟器玩游戏吗

苹果电脑虽然在游戏生态上可能不及Windows平台那么广泛&#xff0c;但其强大的硬件和macOS系统的优化&#xff0c;足以支持一系列高质量游戏的流畅运行。从策略游戏《文明VI》到动作冒险游戏《黑暗之魂III》&#xff0c;再到解谜游戏《传送门2》和角色扮演游戏《神界&#xff1…...

【mathtype】word中如何输入4×4的矩阵,甚至阶数更多

在写论文或者使用word操作的时候&#xff0c;我们可能会使用矩阵插入我们所写的word中&#xff0c;今天小编就分享一下如何在word中输入矩阵。首先&#xff0c;我们word中需要安装mathtype的插件。 ①打开word&#xff0c;鼠标点击mathtype&#xff0c;再点击内联 ② 出现以下…...

ByteArrayOutputStream

ByteArrayOutputStream 是 Java 中的一个类,它属于 java.io 包。这个类实现了一个字节输出流,其中数据被写入到一个字节数组中。这个缓冲区在数据写入时会自动增长,以适应需要存储的数据量。下面是对 ByteArrayOutputStream 的详细解释: 构造函数 ByteArrayOutputStream…...

使用CLIP模型进行零样本图像分类的分步指南

零样本学习允许AI系统对未明确训练过的类别进行图像分类,标志着计算机视觉和机器学习的重大进步。本文将介绍使用CLIP实现零样本图像分类的详细分步指南,从环境设置到最终的图像处理和分类。我们首先介绍零样本学习的概念及其在现代AI应用中的重要性。然后深入探讨CLIP模型的概…...

Llama 3.1用了1.6万个英伟达H100 GPU,耗费......

目录 Llama 3.1发布简介 Llama 3.1模型规模与训练 大模型企业发展面临的问题与困境 算力和能耗算力方面 数据和资金方面 技术和人才方面 Llama 3.1发布简介 当地时间 2024年 7月 23号&#xff0c;Meta 公司发布了迄今为止最强大的开源 AI 模型 Llama 3.1。该模型不仅规模…...

学习c语言第24天(练习)

编程题 第一题 最大公约数最小公倍数求和 //求最大公约数和最小公倍数之和 //暴力求解 //int main() //{ // int n 0; // int m 0; // while (scanf("%d %d", &n, &m)2) // { // int min n < m ? n : m; // int max n > m ? n : m; //…...

【微信小程序开发】——奶茶点餐小程序的制作(一)

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;开发者-曼亿点 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 曼亿点 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a…...

智慧医疗能源事业线深度画像分析(上)

引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...

【OSG学习笔记】Day 18: 碰撞检测与物理交互

物理引擎&#xff08;Physics Engine&#xff09; 物理引擎 是一种通过计算机模拟物理规律&#xff08;如力学、碰撞、重力、流体动力学等&#xff09;的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互&#xff0c;广泛应用于 游戏开发、动画制作、虚…...

基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销&#xff0c;平衡网络负载&#xff0c;延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql

智慧工地管理云平台系统&#xff0c;智慧工地全套源码&#xff0c;java版智慧工地源码&#xff0c;支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求&#xff0c;提供“平台网络终端”的整体解决方案&#xff0c;提供劳务管理、视频管理、智能监测、绿色施工、安全管…...

23-Oracle 23 ai 区块链表(Blockchain Table)

小伙伴有没有在金融强合规的领域中遇见&#xff0c;必须要保持数据不可变&#xff0c;管理员都无法修改和留痕的要求。比如医疗的电子病历中&#xff0c;影像检查检验结果不可篡改行的&#xff0c;药品追溯过程中数据只可插入无法删除的特性需求&#xff1b;登录日志、修改日志…...

Python实现prophet 理论及参数优化

文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候&#xff0c;写过一篇简单实现&#xff0c;后期随着对该模型的深入研究&#xff0c;本次记录涉及到prophet 的公式以及参数调优&#xff0c;从公式可以更直观…...

Unit 1 深度强化学习简介

Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库&#xff0c;例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体&#xff0c;比如 SnowballFight、Huggy the Do…...

高防服务器能够抵御哪些网络攻击呢?

高防服务器作为一种有着高度防御能力的服务器&#xff0c;可以帮助网站应对分布式拒绝服务攻击&#xff0c;有效识别和清理一些恶意的网络流量&#xff0c;为用户提供安全且稳定的网络环境&#xff0c;那么&#xff0c;高防服务器一般都可以抵御哪些网络攻击呢&#xff1f;下面…...

mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包

文章目录 现象&#xff1a;mysql已经安装&#xff0c;但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时&#xff0c;可能是因为以下几个原因&#xff1a;1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...

重启Eureka集群中的节点,对已经注册的服务有什么影响

先看答案&#xff0c;如果正确地操作&#xff0c;重启Eureka集群中的节点&#xff0c;对已经注册的服务影响非常小&#xff0c;甚至可以做到无感知。 但如果操作不当&#xff0c;可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...