HTTP网络协议(学习笔记五)

HTTP网络协议(五)

15~18课

15.状态码_form提交

状态码(Status Code)

-状态码指示HTTP请求是否已成功完成

状态码可以分为5类

-信息响应:100~199

-成功响应:200~299

-重定向:300~399

-客户端错误:400~499

-服务端错误:500~599

状态码描述语

100 continue

-请求的初始部分已经被服务器收到,并且没有被服务器拒绝,客户端应该继续发送剩余的请求,如果请求已完成,就忽略这个响应

-允许客户端发送带请求体的请求前,判断服务器是否愿意接收请求(服务器通过请求头判断)

-在某些情况下,如果服务器再不堪请求体就拒绝请求时,客户端就发送请求体是不恰当的或低效的

200 OK:请求成功

302 Found:请求的资源被暂时的移动到了由Location头部指定的URL上

304 Not Modified: 说明无需再次传输请求的内容,也就是说可以使用缓存的内容

400 Bad Request: 由于语法无效,服务器无法理解该请求

有可能格式没问题,但内容不全,也会返回400。(可由开发决定)

401 Unauthorized: 由于缺乏目标资源要求的身份验证凭证

403 Forbidden: 服务器端有能力处理该请求,但是拒绝授权访问

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

405 Method Not Allowed: 服务器禁止了使用当前HTTP方法的请求(有能力,但是禁止)

406 Not Acceptable: 服务器端无法提供与Accept-Charset以及Accept-Language 指定的值相匹配的响应

408 Request Timeout: 服务器想要将没有在使用的连接关闭

一些服务器会在空闲连接上发送此消息,即使是在客户端没有发送任何请求的情况下

500 Internal Server Error: 所请求的服务器遇到意外的情况并阻止其执行请求

501 Not Implemented: 请求的方法不被服务器支持,因此无法被处理

-服务器必须支持的方法(即不会返回这个状态的方法) 只有GET和HEAD

502 Bad Gateway: 作为网关或代理角色的服务器,从上游服务器(如tomcat)中接收到的响应是无效的

503 Service Unavailable:服务器尚处于可以接受请求的状态

-通常造成这种情况的原因是由于服务器停机维护或已超载

form提交 - 常用属性

html 里form里的button, 默认类型 type = submit

form提交,文件上传必须使用multipart/form-data

-action: 请求的URI

-method: 请求方法(GET、POST)

-enctype: POST请求时,请求体的编码方式

application/x-www-form-urlencoded(默认值)

用&分隔参数,用=分割键和值,字符用URL编码方式进行编码

getParameter, 只能取urlencoded的方法取值

multipart/form-data的类型,不能通过getParameter取出。需要从content-type 的boundary取出每一段的数据

Java里可以用第三方库取出这些值,帮助解析请求体。 第三方库 Commons-fileupload

form提交 - multipart/form-data

参考RFC_1521

请求头

Content-Type:multipart/form-data; boundary=xxx


MORERR formi.jpg

16.跨域_Cookie_Session

Access-Control-Allow-Origin 服务器设置,告诉浏览器,谁能跨域

Origin 浏览器发给服务器,告诉服务器源头是什么

前后端分离:后台工程师 JAVA

前端工程师 HTML JS CSS

页面服务器(Nginx)

03CORS FontEdge

Index.html

后台服务器(Tomcat)

02.Cors UserSecvlet

Idea服务器会自动开启一个服务器

同源策略(Same-Origin Policy)(浏览器出于安全考虑)

浏览器有个同源策略 Ajax请求 异步请求的一种

-它规定了:默认情况下,Ajax请求只能发送给同源的URL

-同源是指三个相同:协议、域名(IP)、端口

-img、script、line、iframe、video、audio等标签不受同源策略的约束

跨域资源共享和

解决Ajax跨域请求的常用方法

-CORS(Cross-Origin Resource Sharing),跨域资源共享

CORS的实现需要客户端和服务器同时支持

-客户端

所有的浏览器都支持(IE至少是IE10版本)

-服务器

需要返回相应的响应头(比如Access-Control-Allow-Origin)

告知浏览器这是一个允许跨域访问的请求

Cookie 请求头

Set-Cookie 响应头

Cookie: (只针对一个浏览器,换了浏览器需重新设置Cookie)

在服务器(浏览器)存储一些数据,存储到本地磁盘(硬盘)

服务器可以返回Cookie交给客户端去存储

Cookie是直接存储在浏览器本地的一小串数据

-使用document.cookie访问Cookie

-修改Cookie时,只会修改其中提到的Cookie

-name = value 必须被编码(encodeURIComponet)

-一个Cookie最大为4kb, 每个网站最多有20+个左右的Cookie(具体取决于浏览器)

服务器设置Cookie

Cookie通常是由Web服务器使用的响应头Set-Cookie设置的

关于max-age

-在JavaScript

Cookie的作用域

domain和path标示定义了Cookie的作用域,即Cookie应该发送给哪些URL

domain

-标示制定了那些主机可以接受Cookie

-如果不指定,默认为当前文档的主机(不包含子域名);如果指定了domain, 则一般包子域名

-例如:如果设置domain=502it.com, 则Cookie也包含在子域名中(如bbs.520it.com)

Path

-标识置顶了主机下的哪些数据路径可以接受Cookie, 子路径也会被匹配

-例如:设置path=/docs, 则一下地址都会匹配

/docs

/docs/one/

/docs/one/img

Session

getSession内部的原理

检查客户端是否有发送一个叫做JSSESION的Cookie

-如果没有

创建一个新的session对象,并且这个Session对象会有一个id

这个Session对象会保留在服务器的内存中

在响应的时候,会添加一个Cookie(JESSIONID=Session对象的id)给客户端

-如果没有

返回id为JSSESION的Session对象

Session的有效期

-session的有效期默认是30分钟

-可以在web.xml中配置失效时间(单位是分钟)

总结

Cookie

-数据存储在浏览器客户端

-数据有大小和数据的限制

-适合存储一些小型、不敏感的数据

-默认情况下,关闭浏览器后就会销毁

Session

-数据存储在服务器端

-数据没有大小和数量的限制

-可以存储大型、敏感的数据(比如用户数据)

-默认情况下,未使用30分钟后就会销毁

Cookie、Session会话跟踪技术,请求之间是否是同一个会话。

17.代理CDN网络安全

代理服务器(Proxy Server)

特点

-本身不生产内容

-处于中间位置转发上下游的请求和响应

面向下游的客户端:它是服务器

面向上游的服务器:它是客户端

正向代理:代理的对象是客户端

反向代理:代理的对象是服务器

正向代理 - 作用

-隐藏客户端身份

-绕过防火墙(突破访问限制)
-internet访问控制

-数据过滤

-一些免费的正向代理

https://ip.jiangxianli.com/

https://www.kuaidaili.com/free/inha/

反向代理 - 作用

-隐藏服务器身份

-安全防护

-负载均衡

抓包工具的原型

Fiddler、Charles等抓包工具的原理:在客户端启动了正向代理服务

需要注意

-wireshark的原理是:通过底层驱动,拦截网卡上流动的数据

代理服务器 - 相关的头部字段

Via: 追加经过的每一台代理服务器的主机名(或域名)

X-Forwarded-For: 追加请求方IP地址

X-Real-IP: 客户端的真实IP地址

CDN(Content Delivery Networks 或Content distribution Network),译为:内部分发发网络

利用最靠近每位用户的服务器

更快更可靠地将音乐、图片、视频等资源文件(一般是静态资源)传递给用户

CDM运营商在全国,乃至全球的各大枢纽城市都建立了机房

-部署了大量拥有高存储高宽带的节点,构建了一个跨运营商、跨地域的专用网络

内容所有者向CDN运营商支付费用,CDN将其内容交付给最终客户

网络安全问题

网络通信中面临的4种安全威胁

截取:窃听通信内容

中断:中断网络通信

篡改:篡改通信内容

伪造:伪造通信内容

网络层- ARP欺骗

ARP欺骗(ARP spoofing)、又称ARP毒化(ARP poisoning)、ARP病毒、ARP攻击

ARP欺骗可以造成的效果

-可让攻击者获取局域网上的数据包甚至可以篡改数据包

-可让网络上特定电脑之间无法正常通行(比如网络执法官这样的软件)

-让送至特定IP地址的流量被错误送到攻击者所取代的地方

APR欺骗 - 核心步骤举例

-假设主机C是攻击者,主机A、B是被攻击者

C只要收到过A、B发送的ARP请求,就会拥有A、B的IP、MAC地址,就可以进行欺骗活动

C发送一个ARP响应给B,把响应包里的源IP设置为A的IP地址,源MAC设置为C的MAC地址

DoS、DDoS

DoS攻击(拒绝服务器攻击,Denial-of-Servive attack)

-使目标电脑的网络或系统资源耗尽,使服务端暂时中断或停止,导致其正常用户无法访问

DDoS攻击(分布式拒绝服务器攻击,Distributed Denial-of-Service attack)

-黑客使用网络上两个或两个以上被攻陷的电脑作为“僵尸”向特定的目标发动DoS攻击

-2018年3月,GitHub遭到迄今为止规模最大的DDoS攻击

DoS攻击可以分为2个大类

-带宽消耗型:UDP洪水攻击、ICMP洪水攻击

-资源消耗型:SYN洪书攻击、LAND攻击

SYN洪水攻击(SYN flooding attack)

-攻击者发送一系列的SYN请求(第一次握手)到目标,然后让目标😯收不到ACK(第三次握手)而进行等待,消耗资源

攻击方法

-跳过发送最后的SCK信息

-修改源IP地址,让目标送SYN-ACK到伪造的IP地址,因此目标永不可能收到ACK(第三次握手)

防护

-参考 RFC_4987

传输层 - LAND攻击

LAND攻击(局域网拒绝服务攻击,Local Area Network Denial arrack)

-通过持续发送相同源地址和目标地址的欺骗数据包,使目标试图与自己建立连接,消耗系统资源直至崩溃

有些系统存在设计上的缺陷,允许设备接受并响应来自网络,却宣称来自于设备自身的数据包,导致循环应答

防护

-大多数防火墙都能拦截类似的攻击包,以保护系统

-部分操作系统通过发布安全补丁修复了这一漏洞

-路由器应同时配置上行与下行的筛选器,屏蔽所有源地址与目标地址相同的数据包

DoS、DDoS防御

防御方式通常为:入侵检测、流量过滤、和多重验证

-堵塞网络带宽的流量将被过滤、而正常的流量可正常通过

防火墙

-防火墙可以设置规则,例如允许或拒绝特定的通讯协议,端口或IP地址

-当攻击从少数不正常的IP地址发出时,可以简单的使用拒绝规则阻止一切从攻击源IP发出的通信

-复杂攻击难以用简单规则来阻止,例如80端口遭受攻击时不可能拒绝端口所有的通信,因为同时会阻止合法的流量

-防火墙可能处于网络框架中过后的位置,路由器可能在恶意流量达到防火墙前即被攻击影响

黑洞引导

-将所有受攻击计算机的通信全部发送至一个“黑洞”(空接口或不存在的计算机地址)或者有足够能力处理洪流的网络设备商,以避免网络收到较大的影响

流量清洗

-当流量被送到DDoS防护清洗中心时,通过采用抗DDoS软件处理,将正常流量和恶意流量区分开

-正常的流量则回注客户网站

应用层 - DNS劫持

DNS劫持,又称为域名劫持

-攻击者篡改了某个域名的解析结果,使得指向该域名的IP变成了另外一个IP

-导致对相应网址的访问被劫持到另一个不可达的或者假冒的网址

-从而实现非法窃取用户信息或者破坏正常网络服务的目的

为防止DNS劫持,可以考虑更靠谱的DNS服务器,比如:114.114.114.114

-谷歌:8.8.8.8、8.8.4.4

-微软:4.2.2.1、4.2.2.2

-百度:180.76.76.76

-阿里:223.5.5.5、223.6.6.6

HTTP劫持:对HTTP数据包进行拦截处理,比如插入JS代码

-比如你的访问某些网站时,在右下角多了一个莫名其妙的弹窗广告

HTTP协议的安全问题

HTTP协议默认是采取明文传输的,因此会有很大的安全隐患

-常用的提高安全性的方法是:对通信内容进行加密后,在进行传输

18.对称加密非对称加密数字签名_证书

常见的加密方式有

-不可逆

单向单列函数:MD5、SHA等

-可逆

对称加密:DES、3DES、AES等

非对称加密:RSA等

-其他

混合密码系统

数字签名

数字证书

iOS底层原理,iOS签名 苹果是如何对app进行签名的(这个课程可以看)

常见英文

encrypt:加密

decrypt:解密

plaintext:明文

ciphertext:密文

如何防止被窃听

单向散列函数(One-Way hash function)

单向散列函数,可以根据消息内容计算出散列值

应用:密码加密

散列值的长度和消息长度无关,无论消息是1bit、10M、100G, 单向散列函数都会计算出固定长度的散列值 (长度20字节)

单向散列-特点

根据任意长度的消息,计算出固定长度的散列值

计算速度快,能快速计算出散列值

消息不同,散列值也不同

具备单向性

单向散列函数-称呼

单向散列函数,也被称为

-消息摘要函数(message digest function)

-哈希函数(hash finction)

输出的散列值,也被称为

-消息摘要(message digest)

-指纹(fingerprint)

MD4、MD5

-产生128bit的散列值,MD就是Message Digest的缩写,目前已经不安全(32个十六进制字符)

SHA-1

-产生160bit的散列值,目前已经不安全

SHA-2

-SHA-256、SHA-384、SHA-512,散列值长度分别是256bit、384bit、512bit

SHA-3

-全新标准

单向散列函数-几个网址

MD5加密

https://www.cmd5.com/hash.aspx

MD5解密

https://www.cmd5.com/

暴力破解,枚举各种数据。但是数据源是无穷无尽的,MD5密文是有限的

其他加密

https://www.sojson.com/encrypt_des.html

https://tool.chinaz.com/tools/md5.aspx

单向散列函数 - 应用:防止数据被篡改(检测数据是否被篡改)

镜像站点,为了分散通信负荷而从镜像站点下载软件

官网站点,对比镜像站点的散列值,为了确认完整性,从原始网址获取到散列

应用:密码加密

18.对称加密非对称加密数字签名_证书

如何加密解密?

对称加密(Symmetric Cryptography):加密用的密钥 = 解密用的密钥

常用的:

AES(Advanced Encryption Standard)

-取代DES成为新标准的一种对称加密算法,又称为Rijndeal加密法

-AES的密钥长度有128、192、256bit三种(密钥越长破解难度越大)

-目前AES,已经逐步取代DES,3DES,成为首选的对称加密算法

它经过了全世界密码学家所进行的高品质验证工作

DES(Data Encryption Standard)

-DES 是一种将64bit 明文加密成64bit密文的加密算法,密钥长度是56bit

-规格上来说,密钥长度是64bit, 但每隔7bit会设置一个用于错误检查的bit, 因此密钥长度实质上是56bit

-由于DES每次只能加密64bit的数据,遇到比较大的数据,需要对DES加密进行迭代(反复)

-目前已经可以在短时间内被破译,所以不建议使用

3DES(Triple Data Encryption Algorithm)

3DES, 将DES重复3次所得到的一种密码算法,也叫做3DES

-三重DES并不是进行3次DES加密(加密->加密->加密)

-而是加密(Encryption)-> 解密(Decryption)-> 加密(Encryption)的过程

-目前还被一些银行等机构使用,但处理速度不高,安全性逐渐暴露出问题

-3个密钥都是不相同的,也叫DED-EDE3

-如果所有的密钥相同,则结果与普通DES是等价的 (无效用法)

-如果密钥1,密钥3相同,密钥2不同,称为DES-EDE2

——————————————————————————————————————————————————————————

非对称加密(公钥密码):(Asymmetric Cryptography)

-在非对称jimmy,密钥分为加密密钥、解密密钥2中,它们并不是同一个密钥

-加密密钥一般是公开的,因此该密钥称为公钥(Public key)

因此,非对称加密也被称为公钥密码算法(Public-key Cryptography)

-解密密钥:有消息接受者自己保管的,不能公开,因此也称为私钥(private key)

公钥、私钥

公钥和私钥是一一对应的,不能单独生成

-一对公钥和私钥统称为密钥对(Key pair)

由公钥加密的密文,必须使用与该公钥对应的私钥才能解密

由私钥加密的密文,必须使用与该私钥对应的公钥才能解密

RSA

目前使用最广泛的非对称加密算法是RSA

RSA的名字,由他的3位开发者,即Ron Rivest、 Adi Shamir、Leonard Adleman的姓氏首字母组成

——————————————————————————————————————————————————————————

密钥配送问题

-在使用对称加密时,一定会遇到密钥配送问题

-如果Alice将使用对称加密过的信息发给了Bob

只有将密钥发送给Bob,Bob才能完成解密

在发送过程中:可能会被窃听,对方也能完成解密

如何解决密钥配送问题

有以下几种解决密钥配送的方法

-事先共享密钥(比如私下共享)

-密钥分配中心(Key Distribution Center, 简称KDC)

-Diffie-Hellman密钥交换

解决密钥配送问题

由消息的接收者,生成一对公钥、私钥

将公钥发给消息的发送者

消息的发送者使用公钥加密消息

非对称加密的加密解密速度比较对称加密要慢

-非对称加密:复杂->安全->加密解密速度慢

-对称加密:简单->不安全->加密解密速度快

混合密码系统(Hybird Cryptosystem)

对称加密的缺点

-不能很好的解决密钥配送问题(密钥会被窃听)

非对称加密的缺点

-加密解密速度比较慢

混合密钥系统:是将对称加密和非对称加密的优势相结合的方法

-解决了非对称加密速度慢的问题

-并通过非对称加密解决了对称加密的密钥配送问题

网络上密码通信所用的SSL/TLS都运用了混合密码系统

混合密码

会话密钥(Session key)

-为本次通信随机生成的临时密钥(例如随机数)

-作为对称加密的密钥,用于加密消息,提高速度

加密步骤(发送消息)

1.首先,消息发送者要拥有消息接受接收的公钥

2.生成会话密钥(随机数),作为对称加密的密钥,加密消息(生成密文A)

3.用消息接收者的公钥,加密会话密钥(2的随机数)(生成密文B)

4.将前两步生成的加密结果,AB一并发送给消息接收者

发送出去的内容包括

-用会话密钥加密的消息(加密方法:对称加密)

-用公钥加密的会话密钥(加密方法:非对称加密)

A —> B 的msg, 一定用对称加密,因为msg大小不确定

混合密码 — 解密

解密步骤(收到消息)

1.消息接收者用自己的密钥解密(密文B)出会话密钥

2.再用第一步解密出来的会话密钥,解密消息

数字签名

服务器如何确认消息的真实性?

在数字签名技术中,有一下2种行为

-生成签名:由消息的发送者完成,通过“签名密钥”生成

-验证签名:由消息的接受者完成,通过“验证密钥”验证

过程改进

1.消息进行MD5,拿到固定长度

2.利用私钥对散列值进行签名

Q:如何能保证这个签名是消息发送者之间签的?

A:用消息发送者的私钥进行签名

Q: 如果有人篡改了消息内容或签名内容,会是什么结果?

A:签名验证失败,证明内容被篡改了

Q:数字签名不能保证机密性?

A:数字签名的作用不是为了保证机密性,仅仅是为了能够识别内容有没有被篡改

数字签名的作用:

1.确认消息的完整性

2.识别消息是否被篡改

3.防止消息发送人否认

非对称加密 - 公钥、私钥再总结

在非对称加密中,任何人都可以使用公钥进行加密

在数字签名中,任何人都可以用公钥验证签名

数字签名,就是将非对称加密反过来使用

既然是加密,那肯定是不希望别人知道我的消息,所以只有我能解密。

-公钥负责加密,私钥负责解密

既然是签名,那肯定是不希望有人冒充我发送消息,所以只有我能签名

-私钥负责签名,公钥负责验签

公钥的合法性

如果遭遇了中间人攻击,那么

-公钥有可能是伪造的

如何验证公钥的合法性

-证书

是消息发送者能拿到真正的公钥,利用权威机构认证过的公钥。

认证权威机构,再拿公钥

证书(Certificate)

说到证书

-首先联想到的是驾驶证、毕业证、英语四六级等等,都是由权威机构认证的

密码学中的证书,全城是公钥证书(Public-key Certificate, PKC),跟驾驶证类似

-里面有姓名、邮箱等个人信息,以及此人的公钥

-并由认证机构(Certificate Authority, CA),施加数字签名

CA就是能够认定“公钥属于此人”,并能够生成数字签名的个人或组织

-有国际性组织、政府设立的组织

-有通过提供认证服务来盈利的企业

-个人也可以成立认证机构

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,045评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,114评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,120评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,902评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,828评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,132评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,590评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,258评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,408评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,335评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,385评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,068评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,660评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,747评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,967评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,406评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,970评论 2 341

推荐阅读更多精彩内容