发表于: 2020-07-04 09:31:04

1 1646


今天完成的事:

深度思考:


6.什么叫加盐?加盐能解决什么问题?通常的加盐方式有哪些?  

 现在很多公司后台以hash值形式存储用户密码(虽然本文以MD5哈希函数为例,但becrypt函数最常用的),用于哈希函数存在碰撞的特性,当后台数据库被攻击然后获取到用户密码哈希值时,还是能通过一定的方法(比如彩虹表攻击)破解用户密码。

 简单来说:由原来的H(p)变成了H(p+salt),相当于哈希函数H发生了变化,每次哈希计算使用的salt是随机的

        H如果发生了改变,则已有的彩虹表数据就完全无法使用,必须针对特定的H重新生成,这样就提高了破解的难度。

1.输入加盐

String inputWithSalt = inputStr + salt;//加盐,输入加盐

       加盐非常简单吧

2.输出带盐

        输出带盐是我自己取的一个名字而已,这个过程可选不要。实际上是将这次哈希计算过程用到的salt存储到这次hash值中,用于后面进行验证密码时进行hash计算,即注册存储密码时和登陆验证密码时用到的salt要一样,免除了另存hash操作。


7.什么叫MD5,MD5通常做什么用处,为什么MD5不可逆,用做密码加密的时候仍然可能会被解密?

加密中常见的算法种类及特点:

1、散列函数(hash):用来验证数据完整性的(不是用来加密解密),由于转化不可逆可以用来进行一些验证。常见散列算法:MD5(消息摘要、摘要长度默认128bit)、SHA、MAC(HMAC) 它们的总体安全性是逐步递增的

2、对称加密算法:通过相同密匙进行加密解密,可逆,用来加密解密。常见对称加密算法:DES算法、AED算法

3、非对称加密算法:密匙分为公钥(公开)和私钥(自己保存)。常见非对称加密算法:DH、RSA

MD5虽然是不可逆的,但是可以通过彩虹码等进行破解

所以为了解决MD5安全性不高的问题,我们采取加盐的方式和HMACMD5(加密匙)方式来使用

8.拦截器是什么?为什么要配置拦截器?拦截器里通常应该校验什么,怎么做到统一配置拦截器,让必须登录才能使用的接口,判断用户未登录时,返回错误信息?

拦截器,在AOP(Aspect-Oriented Programming)中用于在某个方法或字段被访问之前,进行拦截然后在之前或之后加入某些操作。拦截是AOP的一种实现策略。

拦截器可以说相当于是个过滤器:就是把你不想要的或不想显示的内容给过滤掉。拦截器可以抽象出一部分代码可以用来完善原来的Action。同时可以减轻代码冗余,提高重用率。

拦截器与过滤器的比较

相似

1,都有优先处理请求的权利,都可以决定是否将请求转移到请求的实际处理的控制器处。

2,都可以对请求或者会话当中的数据进行加工。

不同

1, 拦截器可以做前置处理也可以做后置处理,还可以进行完成处理,控制的 更加细致,而过滤器只负责前面的过滤行为而已。

2, 过滤器优先执行,还是拦截器优先呢?----------过滤器优先。

3,过滤器是servlet规范里面的组件。

4, 拦截器都是框架自己而外添加的组件。

拦截器可以用来校验cookie和token来进行身份验证


9.Https是什么?怎么配置Https证书,哪些请求需要Https,登录是否需要Https?

HTTP协议也就是超文本传输协议,是一种使用明文数据传输的网络协议。一直以来HTTP协议都是最主流的网页协议,HTTP协议被用于在Web浏览器和网站服务器之间传递信息,以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息。

为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS,为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL/TLS协议,SSL/TLS依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。HTTPS协议可以理解为HTTP协议的升级,就是在HTTP的基础上增加了数据加密。在数据进行传输之前,对数据进行加密,然后再发送到服务器。这样,就算数据被第三者所截获,但是由于数据是加密的,所以你的个人信息让然是安全的。这就是HTTP和HTTPS的最大区别。


1、首先给域名申请证书,我用的阿里云,阿里云的域名证书只能单域名申请免费的。泛域名申请需要几千大洋。商用建议用泛域名的。

2、给IIS导入证书,一般的证书是有密码的,但是证书密码不是你申请的时候填的那个密码,一般会随着证书下载回来有一个密码文件,用那个密码导入就行了。

3、配置域名。首先配置http的域名,正常访问使用80端口。然后配置https域名,使用443端口,所以一台服务器只能使用一个443端口,如果多个域名使用,只能用泛域名的方式。

4、给IIS配置URL重写,可以在URL重写模块里,配置规则,也可以配置web.config。我个人建议使用web.config


10.什么是对称加密,什么是非对称加密?分别适用于什么场景?

对称加密算法:通过相同密匙进行加密解密,可逆,用来加密解密。常见对称加密算法:DES算法、AED算法

非对称加密算法:密匙分为公钥(公开)和私钥(自己保存)。常见非对称加密算法:DH、RSA




非对称加密使用一对秘钥,一个用来加密,一个用来解密,这样加密和解密花费时间就会更长长。

对称加密中加密方和解密方使用同一个密钥,加密解密的速度比较快,耗时短,适合数据比较长时的使用。


11.Token的构造规则是什么,怎么确认用户身份的,怎么保证Token被偷窃的问题?

1,生成一个由base64编码的token,该token由Header,Payload,Signature组成。

2,token作为用户请求的标识,客户端保存这token的全部信息。服务端只需要保存token的Signature部分。

3,服务端把token的Signature存于redis和服务器的数据库中。

4,客户端请求的数据附带token,服务端拿到token,首先校验token,以防token伪造。

校验规则如下

4.1,拆分出token的Header,Payload,Signature。

4.2,校验Signature,通过token的header和payload生成Signature,看看生成的Signature是否和客户端附带上来的Signature一致。如果一致继续请求操作,不一致则打回操作

4.3,查看Signature是否存在服务器的redis和数据库中。如果不存在则打回请求操作


12.Cookie是在Http的什么位置存放,Cookie里的键可以重复吗?

首先cookie失效分为2种:

1:设置过期时间失效(只要设置了过期时间cookie就会存储在硬盘里面)

2:当会话结束时失效,即关闭浏览器窗口(如果没有设置Expires,cookie就会存储在内存里面)

手动删除cookie失效

Cookie不仅仅有名字和值两个属性,还有域(domain)、路径(path)等属性。其中,不同的域、不同的路径下可以存在同样名字的cookie。一般我们设置cookie的方法是用一个同样名字、一个值。这时就一定要搞清楚你要设置的cookie的域和路径,否则就会产生问题,导致服务端获取到的错误的信息


13.什么是session?什么是cookie?session和cookie有什么区别?什么场景适用于session?什么场景适用于cookie?

这个问题小课堂有讲

https://blog.csdn.net/jnshu_it/article/details/79894570


cookie和session的区别

具体来说cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案。同时我们也看到, 由于采用服务器端保持状态的方案在客户端也需要保存一个标识,所以session机制可能需要借助于cookie机制来达到保存标识的目的

cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应当使用session

session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用cookie

单个cookie保存的数据不能超过4k,很多浏览器都限制一个站点最多保存20个cookie。

可以将登陆信息等重要信息存放为session。



明天计划的事:准备任务六


遇到的困难:

收获:








返回列表 返回列表
评论

    分享到