| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> http超详细讲解 -> 正文阅读 |
|
[网络协议]http超详细讲解 |
HTTP相关web浏览器web server,web是world wide web(万维网) 万维网万维网是一个大规模的、联机式的信息存储所,简称web 万维网客户端程序 就是 浏览器,服务器返回的万维网文档就是 浏览器窗口显示的页面 CDN内容分发网络,使用户就近获取资源,提高响应速度 WAFWeb Application Firewall 通过一系列针对http/https的安全策略来专门为web应用提供保护的一款产品 WebService跨语言和操作系统平台的远程调用技术 http优点
http缺点
HTTP协议定义了浏览器怎么向万维网服务器请求以及服务器怎么把文档传给浏览器 HTTP请求响应过程请求特征HTTP报文
四个部分组成,请求行和请求头统称为 header,实体也称 body,实体可以没有 HTTP请求方法
常用就是GET和POST,其他了解即可 GET,POST,PUT,HEAD,DELETE 支持的HTTP协议版本:http1.0,1.1 OPTIONS,TRACE,CONNECT 支持的HTTP协议版本:http1.1 LINK,UNLINE 支持的HTTP协议版本1.0 HTTP版本HTTP1.0HTTP1.1HTTP2.0HTTP标头HTTP缓存机制HTTP内容协商HTTP是应用层协议,数据达到之后需要告诉应用程序这是什么数据,当然不告诉应用这个是哪种类型的数据,应用也可以通过不断尝试来判断,但这种方式低效,而且很大几率检查不出文件类型 浏览器需要告知服务器自己希望能够接收什么样的数据,需要什么样的压缩格式;而服务器需要告诉客户端自己能提供什么 具体标头查看HTTP标头 HTTP认证HTTP提供了用于访问控制和身份认证的功能 认证代理认证响应:
认证协议:
请求:
关于Base64 具体查看编解码和加解密 HTTP CORS跨域Cross-Origin Resource Sharing(CORS),
端口一致,Windows和Mac OS X系统的URL不区分大小写,UNIX和Linux系统区分大小写 同源策略协议,主机(域名),端口一样 处于安全的因素,浏览器限制了从脚本发起跨域的HTTP请求,XMLHttpRequest和其他的Fetch接口会遵循同源策略。也就是说使用这些API的应用程序想要请求相同的资源,那么他们应该具有相同的来源,除非来自其他来源的响应包括正确的CORS标头也可以 跨域请求跨域资源共享通过 添加新的HTTP标头来工作,这些标头允许服务器描述允许从哪些来源从web浏览器读取信息。另外,对于可能导致服务器数据产生副作用的HTTP请求方法(尤其是GET或者具有某些MIME类型POST方法意外HTTP方法),该规范要求浏览器 跨域请求,可能会从下面几种请求中发出
使用
Fetch 是浏览器提供的原生 AJAX 接口。使用 window.fetch 函数可以代替以前的 我们知道 jQuery.ajax 是使用 XMLHttpRequest 对象来发送异步请求的.Fetch就是浏览器帮你把 jQuery.ajax 给实现了,以后大家都是用 fetch 来发送异步请求就好了 fetch特点
Web字体(用于CSS中@font-face中的跨域字体使用),以便服务器可以部署TrueType字体,这些字体只能由允许跨站点加载和使用的网站的使用 使用 图片的CSS形状 简单请求简单请求不会触发CORS预检,满足以下所有条件的请求
预检请求预检请求首先通过 带凭证的请求
调用XMLHttpRequest对象构造函数时必须设置一个特定的标志
跨域HTTP响应标头
例子: Access-Control-Allow-Origin如果指定单个来源,而不是
Access-Control-Allow-Headers响应预检请求,除了CORS安全列出的标头外,还可以
Accept-Control-Max-Age预检请求可以缓存多长时间
Accept-Control-Allow-Credentials
Accept-Control-Expose-Headers该响应标头表明哪些标头可以作为响应的一部分公开。默认情况下,仅公开6个CORS安全列出的响应标头,分别是
HTTP条件请求对于安全的方法,像是
If-Match请求资源的时候用到,与服务器上的ETag的值对比,防止丢失更新,两者一样则返回412 If-None-Match在http缓存中使用到。具体参考http缓存机制 If-Modified-Since在http缓存中使用到。具体参考http缓存机制 If-Range如果满足条件,时间或者ETage,则返回资源
If-Unmodified-Since服务器只有在给定日期之后没有对其进行修改时,服务器才会返回资源
以下3个例子: http缓存机制断点续传通过乐观锁避免丢失更新HTTP Cookie作用
Cookie曾经用于一般的客户端存储。是合法的,因为他们是客户端上存储数据的唯一方法。如今,建议使用现代存储API。Cookie随每个请求一起发送,因此他们可能会降低性能(尤其是对于移动数据连接而言)。客户端存储的现代API是
随着对服务器的每个新请求,浏览器将使用Cookie头将所有以前存储的Cookie发送给服务器
Cookie主要分为三类, 会话Cookie上面的例子就是会话Cookie,因为没有设置Expires或Max-Age。客户端关闭Cookie就会删除 永久Cookie
到设置的时间之后才会过期 Cookie的HttpOnly安全的cookie需要经过https协议通过加密的方法发送到服务器。即使时安全的,也不应该将敏感信息存储在cookie中,因为他们本质上是不安全的,并且此标志不能提供真正的保护 HttpOnly
设置了HttpOnly为true之后,js脚本将无法读取到cookie信息,有效防止
cookie返回给客户端
或者用@CookieValue
springboot中获取cookie
Cookie的作用域
例如,设置Domain=mozilla.org,则Cookie也包含在子域名中developer.mozilla.org 例如,设置Path=/docs,则一下地址都会匹配
XSS什么是XSS
XSS跨站脚本攻击(Cross Site Scripting),的本质是攻击者在
危害
流量劫持是利用各种恶意软件,木马修改浏览器、锁定主页或不停弹出新窗口等方式,强制用户访问某些网站,从而造成用户流量损失的情形 Hosts劫持hosts文件是一个没有扩展名的文件,通常的路径在 例如:
域名劫持关键词劫持百度搜索某网站关键词,搜索后的结果是正确的,但是点击进去却跳转到别的非法网站
LSP劫持混合型劫持DNS劫持当别人访问了xxx1.com的时候域名还是他原来的域名,但是 dos攻击iframe、frame少用iframe CSRF跨域请求伪造攻击者盗用了你的身份,以你的名义发送恶意请求。CSRF能够做的事情包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账 从上图可以看出,要完成一次CSRF攻击,受害者必须依次完成两个步骤:
1.你不能保证你登录了一个网站后,不再打开一个tab页面并访问另外的网站。 防御CSRF验证Referer字段A网站会验证Referer值,如果是自己域名开头的,接受请求;否则拒绝 虽然 HTTP 协议上有明确的要求,但是每个浏览器对于 Referer 的具体实现可能有差别,并不能保证浏览器自身没有安全漏洞。使用验证 Referer 值的方法,就是把安全性都依赖于第三方(即浏览器)来保障,从理论上来讲,这样并不安全。 如果使用ie6,则有方法篡改Referer值 在请求地址中添加token并验证token 可以在用户登陆后产生并放于 session 之中,然后在每次请求时把 token 从 session 中拿出,与请求中的 token 进行比对,但这种方法的难点在于如何把 token 以参数的形式加入请求。对于 GET 请求
对于 POST 请求,要在 form 的最后加上
要对于每一个请求都加上 token 是很麻烦的,并且很容易漏掉,通常使用的方法就是在每次页面加载时,使用 javascript 遍历整个 dom 树,对于 dom 中所有的 a 和 form 标签后加入 token。这样可以解决大部分的请求,但是对于在页面加载之后动态生成的 html 代码,这种方法就没有作用,在编码时手动添加 token 还有一个缺点是难以保证 token 本身的安全。特别是在一些论坛之类支持用户自己发表内容的网站,黑客可以在上面发布自己个人网站的地址。由于系统也会在这个地址后面加上 token,黑客可以在自己的网站上得到这个token,并马上就可以发动 CSRF 攻击 为了避免这一点,系统可以在添加 token 的时候增加一个判断,如果这个链接是链到自己本站的,就在后面添加 token,如果是通向外网则不加 不过,即使这个 csrftoken 不以参数的形式附加在请求之中,黑客的网站也同样可以通过 Referer 来得到这个 token 值以发动 CSRF 攻击 HTTP头中自定义属性并验证通过 XMLHttpRequest 这个类,可以一次性给所有该类请求加上 csrftoken 这个 HTTP 头属性,并把 token 值放入其中。这样解决了上种方法在请求中加入 token 的不便,同时,通过 XMLHttpRequest 请求的地址不会被记录到浏览器的地址栏,也不用担心 token 会透过 Referer 泄露到其他网站中去 然而这种方法的局限性非常大。XMLHttpRequest 请求通常用于 Ajax 方法中对于页面局部的异步刷新,并非所有的请求都适合用这个类来发起,而且通过该类请求得到的页面不能被浏览器所记录下,从而进行前进,后退,刷新,收藏等操作,给用户带来不便 HTTPShttp天生明文传输的特性,在传输过程中,任何人都有可能从中截获、修改或者伪造请求发送,所以不安全。在HTTP的传输过程中不会验证通信方的身份,因此HTTP信息交换的双方可能会遭到伪装;接收方和发送方并不会验证报文的完整性,为了解决以上问题HTTPS应运而生 HTTP + SSL / TLS = HTTPS,默认端口 HTTPS做了什么
中间人攻击中间人攻击是指攻击者与通讯的两端分别创建独立的联系,并交换其所收到的数据,使通讯的两端认为他们正在通过一个私密的连接与对方直接对话,但事实上整个会话都被攻击者完全控制 有一个前提,需要截获客户端与服务端通信的线路
SSL/TLSTLS(Transport Layer Security)是SSL(Secure Socket Layer)的后续版本,它们是用于在互联网两台计算机之间用于 SSL/TLS通过将称为
具体参考密码学中的 现代密码学 HTTPS工作原理Cookie和Session的区别https://blog.csdn.net/chen13333336677/article/details/100939030 JSON Web Token和Session Cookie的对比UDPTCPTCP三个握手和四次挥手TCP 和 UDP的区别地址栏输入URL发生了什么 |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 3:37:49- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |