2021-03-05

**

字节后端面试

**
万事万物皆是对象
面向对象的概念
面向对象把复杂的逻辑简单化,增强代码的复用性;
面向对象编程的特点是 抽象 封装 继承 多态等;

继承 关键字 extend Object 所有类的父类
多态的充要条件
. 继承
.重写父类方法
.父类引用指向子类对象

https 的工作原理和安全机制
https的工作原理
https是一种以安全为目标的http协议 在http层下面加入了SSL层,SSL层负责加解密,https的安全基础是SSL
SSL:(安全套接字)位于可靠的面向连接的网络层协议和应用层协议之间的协议层,SSL通过相互认证、使用数字签名确保完整性,以实现客户端和服务端的安全通信,该协议由两层组成:SSL记录协议和SSL握手协议。
TSL:(传输安全协议)用于两个应用程序之间提供保密性和数据完整性,该协议由两层组成:TLS记录协议和TLS握手协议

HTTP和HTTPS的区别
HTTP是明文传输,HTPS是通过SSL/TLS进行加密
HTTP的端口号是80,HTTPS的端口号是443
HTPS需要CA申请证书,一般免费证书很少,需要交费,当浏览器访问HTPS通信网站时,浏览器的弟子栏会出现一个带锁的标记,对HTTPS的显示方式会因为浏览器的不同而有所改变

HTTPS的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比HTTP协议安全。

HTTP通信有什么问题?为什么需要HTTPS?
1 通信双方使用明文,很容易被窃听
由于HTTP本身不具有加密的功能,所以无法做到对通信整体进行加密。
数据从发送端传递给接收端的过程中,中间需要多个网络设备,所以经过这些设备的数据都有可能被截获或者窥视。例如抓包工具 Wireshark、Fiddler,这些工具可以轻而易举获取HTTP协议报文的请求和相应内容,并对其进行解析。即使请求体和响应体中敏感的内容进行加密处理,但是加密处理后的报文信息本身还是会被看到。
2 无法证明报文的完整性,所以可能遭到篡改
所谓完整性是指信息的准确度。若无法证明其完整性,通常也意味着无法判断信息是否准确。由于HTTP协议无法证明通信的报文完整性,因此,在请求响应送出之后直到对方接受之前这段时间内,即使请求或响应遭到篡改,也没有办法获悉。换句话说,没有任何办法确认,发出的请求;/响应和 接受到的请求/响应是前后相同的。
3 不验证通信方的身份,因此可能遭遇伪装、
HTTP协议中的请求和相应不会对通信双方进行确认,在HTTP协议通信时,由于不存在确认通信双发的处理步骤,任何人都可以发起请求。另外,服务器只要接收到格式合法的请求,不管对方是谁都会发出一个相应(但是也仅限发送端的IP地址和端口号没有WEB服务器设定限制访问的前提下)。

HTTPS如何解决上述三个问题

HTTPS协议保证安全基本依赖于TLS/SSL协议,TLS/SSL的功能实现主要依赖三类基本算法:
散列函数
对称加密
非对称加密
其中利用非对称加密实现身份验证和秘钥协商,对称加密算法采用协商的秘钥对数据加密,基于散列函数验证信息的完整性

解决内容可能被窃听的问题-——加密
对称加密
这种方式加密和解密同用一个秘钥。加密和解密都会用到秘钥。没有秘钥就无法对密码解密,任何人只要知道秘钥就可以解密了

以对称方式加密时 必须把秘钥也发给对方,可是怎么才能安全的转交?在互联网上转发秘钥时,如果通信被监听那么秘钥就可能会落入攻击者之手,同时也就失去了加密的意义,另外还需要设法安全地保管接收到的秘钥。

非对称加密
一把私钥 一把公钥

对称加密 + 非对称加密
使用对称加密的好处就是解密效率比较快,使用非对称加密的好处是传输的内容不能被破解,因为就算你拦截到了数据,但是没有对应的私钥,也是不能破解内容的。

具体做法是:发送密文的一方使用对方的公钥进行加密处理“对称的秘钥”,然后对方用自己的私钥拿到了“对称秘钥”这样就可以确保交换的秘钥是安全的前提下。使用对称加密方式进行通信。所以,HTTPS 采用对称加密和非对称加密两者混合加密机制。

解决报文可能遭到篡改的问题——数字签名
网络传输过程需要经过许多中间节点,虽然数据无法被破解,但是可能被篡改,那如何校验数据的完整性呢?校验数字签名
数字签名有两种功效
1 能确定消息确实是由发送方签名并发出来的,因为假冒不了发送方的签名
2 数字签名能确定消息的完整性,证明数据是否未被篡改过。

HTTPS工作机制

1 浏览器发起一个HTTPS的请求
2 服务端把事先配置好的公钥证书返回给客户端
3 浏览器验证公钥证书:比如是否在有效期内,证书用途是不是匹配客户端请求站点,如果验证通过则继续,不通过则显示警告信息
4 浏览器采用伪随机数生成器生成加密所使用的对称钥匙,然后证书的公钥加密这个对称秘钥,发给服务器。
5 服务器使用自己的私钥解密这个消息,得到对称秘钥。至此,客户端和服务器都持有了相同的对称秘钥。
6 服务器使用对称秘钥对浏览器第一次请求的URL响应进行加密,发送给浏览器
7 此后浏览器和服务器都使用这个对称秘钥进行通信

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值