HTTP协议简介,数据安全 如何保证http传输安全性,http与https区别

目前大多数网站和app的接口都是采用http协议,但是http协议很容易就通过抓包工具监听到内容,甚至可以篡改内容,为了保证数据不被别人看到和修改,可以通过以下几个方面避免。

重要的数据,要加密,比如用户名密码,我们需要加密,这样即使被抓包监听,他们也不知道原始数据是什么(如果简单的md5,是可以暴力破解),所以加密方法越复杂越安全,根据需要,常见的是 md5(不可逆),aes(可逆),自由组合吧,你还可以加一些特殊字符啊,没有做不到只有想不到, 举例:username = aes(username), pwd = MD5(pwd + username);。。。。。

非重要数据,要签名,签名的目的是为了防止篡改,比如http://www.xxx.com/getnews?id=1,获取id为1的新闻,如果不签名那么通过id=2,就可以获取2的内容等等。怎样签名呢?通常使用sign,比如原链接请求的时候加一个sign参数,sign=md5(id=1),服务器接受到请求,验证sign是否等于md5(id=1),如果等于说明正常请求。这会有个弊端,假如规则被发现,那么就会被伪造,所以适当复杂一些,还是能够提高安全性的。

登录态怎么做,http是无状态的,也就是服务器没法自己判断两个请求是否有联系,那么登录之后,以后的接口怎么判定是否登录呢,简单的做法,在数据库中存一个token字段(名字随意),当用户调用登陆接口成功的时候,就将该字段设一个值,(比如aes(过期时间)),同时返回给前端,以后每次前端请求带上该值,服务器首先校验是否过期,其次校验是否正确,不通过就让其登陆。(redis 做这个很方便哦,key有过期时间)

 

aes:https://blog.csdn.net/qq_28205153/article/details/55798628

2、http与https区别

区别:
1、加密:http协议对传输的数据不进行加密;https协议对传输的数据使用SSL安全协议进行加密,https加密需要CA签发的证书。 
2、端口:http协议使用TCP的80端口;https协议使用TCP的443端口 
3、网络分层模型:http可以明确是位于应用层;https是在http的基础上加上了SSL安全协议,而SSL是运输层协议,所以https是应用层和传输层的结合(我不同意网上将https粗暴地归为运输层的说法)

https如何保障安全
https使用SSL安全协议来保障安全性。具体体现在密钥和证书验证上。 
密钥: 
1、服务端生成一对公钥和私钥,将公钥和证书发送给客户端; 
2、客户端验证证书通过后生成一个对称加密的密钥,并使用服务器生成的公钥加密,发送给服务器; 
3、服务器使用私钥解密获得对称加密密钥。 
4、客户端和服务器相互发送消息认可对称加密密钥,至此加密通道建立。 
5、开始数据传输,在检验数据完整性的基础上,使用对称加密密钥进行加密解密。 
证书验证: 
一般来说浏览器都内置了权威CA的根证书,客户端使用根证书的密钥对服务器发来的证书进行解密验证,若域名、有效期、签发机关等验证项符合则通过,否则认定证书无效,断开连接。
 

HTTP协议简介

HTTP(超文本传输协议)是应用层上的一种客户端/服务端模型的通信协议,它由请求和响应构成,且是无状态的。(暂不介绍HTTP2)

  • 协议

协议规定了通信双方必须遵循的数据传输格式,这样通信双方按照约定的格式才能准确的通信。

  • 无状态
    无状态是指两次连接通信之间是没有任何关系的,每次都是一个新的连接,服务端不会记录前后的请求信息。

  • 客户端/服务端模型
    在这里插入图片描述

 

网络层级

 

应用层 —————— HTTP

传输层 —————— TCP UDP

网络层 —————— IP

数据链路层 ————数据链路

物理层 ——————物理介质

 

URL构成

用了这么久,你注意过吗?
在这里插入图片描述
协议内容

请求(Request)

客户端发送一个HTTP请求到服务端的格式:

  • 请求行

  • 请求头

  • 请求体

 

  • 响应(Response)

服务端响应客户端格式:

  • 状态行

  • 响应头

  • 响应体
    在这里插入图片描述
    状态码

HTTP状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型,后两个数字没有分类的作用。HTTP状态码共分为5种类型:
在这里插入图片描述
更详细的状态码可查看 HTTP状态码

但一般我们只需要知道几个常见的就行,比如 200,400,401,403,404,500,502.

请求方法

截止到HTTP1.1共有下面几种方法:
在这里插入图片描述
请求和响应常见通用头

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

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

相关文章

mongoose只更新数组中某一项的字段

只是需要一个特殊符号$代表匹配某一项 数据库设计如下: 核心代码如下: // 回答试题public async userPaperAnswer(request: IRequest, _h: IResponse) {const { user_paper_id, question_id, option_user } request.payload;const updOne await Use…

工作213:不能改变父组件值

父组件通过props传值给子组件,如何避免子组件改变props的属性值报错问题 报错Avoid mutating a prop directly since the value will be overwritten whenever the parent component re-renders. Instead, use a data or computed property based on the prop’s v…

Android 下拉式抽屉折叠动画

自定义listview工具类1、 public class ViewMeasureUtils {/*** 根据父 View 规则和子 View 的 LayoutParams,计算子类的宽度(width)测量规则** param view*/public static int getChildWidthMeasureSpec(View view, int parentWidthMeasureSpec) {// 获取父 View …

beta冲刺总结

团队成员及分工 姓名学号分工陈家权031502107前端(消息模块)赖晓连031502118前端(问答模块)雷晶031502119服务器林巧娜031502125前端(首页模块)一、项目预期计划及现实进展 项目预期计划现实进展解决页面异…

cesium polygon 悬浮在半空中

效果如下: 代码: let arr [[120.87140893447473, 31.877030830389447, 128.64],[120.87140872335587, 31.876963534304792, 128.64],[120.87202301763111, 31.87696299560446, 128.63],[120.87202432001283, 31.877030271988385, 128.63]]arr [].con…

工作215:点击按钮报错

获取值有点问题 点击同一按钮获取值有问题

phalcon无限重定向

问题 换了个新电脑,后来重新配置phalcon环境。由于用得是windows,而且还用得是2.0.5得版本,官网已经没提供这个版本下载了。而旧电脑已经被格式化了,?。 寻找旧版本 通过一番搜索,发现了一个issue,提到pha…

!KMP算法完整教程

KMP算法完整教程 全称: Knuth_Morris_Pratt Algorithm(KMP算法) 类型: 高级检索算法 功能: 字符串匹配查找 提出者: D.E.Knuth(克努兹),J.H.Morris(莫瑞…

修改git bash主题配色和字体

这win下默认的主题令人窒息 打开git bash,使用命令cd ~然后用Atom命令打开文件.minttyrc.atom .minttyrc如果默认没有.minttyrc文件,自己新创建的也行。里面的内容填写如下:FontConsolas FontHeight14ForegroundColour131,148,150 Background…

jdk和maven配置

Java 1、首先准备一下文件 2、直接安装jdk,我是一直下一步,路径也是默认 3、开始配置环境变量 电脑--属性--高级--环境变量,新建系统变量 JAVA_HOME 和 CLASSPATH变量名:JAVA_HOME变量值:C:\Program Files\Java\…

java 数据结构详解,数组,集合,HashMap

数组的特性: 数组在内存中是一块连续的存储单元存储起来的,声明数组的时候我们必须声明其长度,这样才会为我们声明一个连续的存储区域。 这种存储方式造成我们想要往数组中存储一个数据时那么其后面各个元素都要往后移动,同样的&…

工作218:页面样式调整

<div class"table-list-page"><div class"query-area"><!--样式控制全部 已经退回 待审核GY--><el-row><el-radio-group v-model"query.status" change"list"><el-radio-button label""&g…

前端学习(2681):重读vue电商网站1之后台启动

后台数据接口启动文件 node -app.js 需要mysql数据库

Promise初步详解(resolve,reject,catch)

一:何为Promise&#xff1f; 为了直观一点&#xff0c;首先我们采用console.dir(Promise)看一下它的结构组成。 从上面的图片中我们可以到&#xff0c;Promise其实是一个构造函数&#xff0c;它有resolve&#xff0c;reject&#xff0c;race等静态方法;它的原型&#xff08;pro…

session 的 源码

session 的 源码 1.session 和 cookie 的 区别&#xff1a; 答&#xff1a; cookie 它是保存在浏览器的键值对。 session 它是保存在服务端的键值对。 它 依赖cookie 存在。 流程&#xff1a; 一个服务端&#xff0c; 一个客户端第一次来 服务端 去 客户端 发来的请求里的…

前端学习(2682):重读vue电商网站3之登录页面总结el-form 组件问题

el-form 组件默认是 content-box&#xff0c;我们设置其如下属性时&#xff0c;就会出现长度比我们想象中长一点的情况。 .login_form {position: absolute;bottom: 60px;width: 100%;padding: 0 20px; //多加一行box-sizing: border-box; } 运行结果

Android 统一View样式,textview样式

xmlns:tools"http://schemas.android.com/tools" android:text"提示" 1、在values文件夹下的styles文件里面创建textview样式——android:style/Widget.TextView可以替换为其他view,如&#xff1a;button,CheckBox。。。。。 <style name"mytextst…

前端学习(2683):重读vue电商网站4之登录页面总结使用 iconfont 给输入框添加图标

在 main.js 中导入字体图标 然后在 el-input 组件中通过 prefix-icon 进行相关图标引用 最终效果图如下&#xff1a;