发表于: 2019-05-28 22:51:56
1 514
深度思考
7、什么叫MD5,MD5通常做什么用处,为什么MD5不可逆,用做密码加密的时候仍然可能会被解密?
MD5:Message-Digest Algorithm,一种密码散列函数,通常用作数据加密,MD5对一段信息(Message)产生信息摘要(Message-Digest),以防止被篡改。
MD5不可逆的原因是由于散列函数(也叫哈希函数,杂凑函数,它是一种单向密码体制,即从明文到密文的不可逆映射,只有加密过程,没有解密过程,哈希函数可以将任意长度的输入经过变化后得到固定长度的输出,这个固定长度的输出称为原消息的散列或消息映射。理想的哈希函数可以针对不同的输入得到不同的输出如果存在两个不同的消息得到了相同的哈希值,那我们称这是一个碰撞。)在计算过程中原文的部分信息是丢失了的。一个MD5理论上是可以对应多个原文的,因为MD5是有限的,而原文是无限多的。
因为有彩虹表,如:123456的MD5值为E10ADC3949BA59ABBE56E057F20F883E,我们把123456这类经常出现的值全部算出md5值然后保存为一个巨大的表。当我们想知道某个MD5值的原文内容时,就可以把这个MD5值输入到表中去反向查询原文
8、拦截器是什么?为什么要配置拦截器?拦截器里通常应该校验什么,怎么做到统一配置拦截器,让必须登录才能使用的接口,判断用户未登录时,返回错误信息?
java里的拦截器是动态拦截action调用的对象,它提供了一种机制可以使开发者在一个action执行的前后执行一段代码,也可以在一个Action执行前阻止其执行,同时也提供了 一种可以提供Action中可重用部分代码的方式。
如果要实现登录功能就需要使用拦截器将所有需要登录后可访问的url进行配置。
拦截器通常效验的东西一般是请求地址,用户信息等。
之前有日报已经有些参考:https://www.jnshu.com/daily/97491?dailyType=others&total=115&page=5&uid=33810&sort=0&orderBy=3
9、Https是什么?怎么配置Https证书,哪些请求需要Https,登录是否需要Https?
https是以安全为目标的http通道,简单来说就是http的安全版,https的安全基础是ssl证书,因此加密的详细内容就需要ssl证书。https协议的作用主要作用可以分为两种:一种是建立一个信息安通道。另一种就是确认网站的真实性。
证书通过权威的CA机构付费获得的证书才能被互联网承认,我们将其放在服务器上面,配置好后,就可以进行https通信了。
因为https是加密通道,所以只要是登录验证等请求都需要https。
10、什么是对称加密,什么是非对称加密?分别适用于什么场景?
对称加密,又称公开密钥加密,加密和解密都会用到同一个密钥,如果密钥被攻击者获得,这时候加不加密都没什么意义了
非对称加密,又称共享密钥加密,使用一会非对称的密钥,一把公钥,一把私钥,公钥用来加密,私钥用来解密
DES/AES等对称加密:速度快,适合大量数据,处理数据后可复原
RSA等非对称加密:身份验证,数据签名等数据量小的地方,如:试试口令登录,试试公钥登录
11、Token的构造规则是什么,怎么确认用户身份的,怎么保证Token被偷窃的问题?
通过jwt来生成token
基于token的身份验证方法,在服务端不需要存储用户的登录记录:
● 客户端使用用户名和密码请求登录
● 服务端收到请求,去验证用户名和密码
● 验证成,服务端会签发一个token,再把这个token发送给客户端
● 客户端收到token后可以把它存储起来,比如放在cookie里或local storage里
● 客户端每次向服务端请求资源的时候需要带着服务端签发的token
● 服务端收到请求,然后去验证客户端请求里面带着的token,如果验证成功就向客户端返回请求的数据
使用加密工具将token进行加密。
12、Cookie是在Http的什么位置存放,Cookie里的键可以重复吗?
cookie在httpheader存放,有两个:set-Cookie和Cookie
Set-Cookie由服务器发送,它包含咋响应请求的头部中,它用于在客户端创建一个从cookie
cookieHeader由客户端发送,包含在http请求的头部中。
若不设置cookie的path,则名字相同的cookie视为相同的cookie,后面的覆盖前面的,所以不会重复。
13、什么是session?什么是cookie?session和cookie有什么区别?什么场景适用于session?什么场景适用于cookie?
session的中文翻译是“会话”,但在计算机领域一般称之为“时域”,session是指一个终端用户与交互系统进行通信的时间间隔,通常指从注册进入系统到注销退出系统之间所进过的时间。当用户打开某个web应用时,便与web服务器产生一次session。服务器使用session把用户的信息临时保存在了服务器上,用户离开网站后session会被销毁。这种用户信息存储方式相对于cookie来说更安全,可是session有个缺陷:如果web服务器做了负载均衡,那么下一个操作请求到了另一台服务器的时候session会丢失。
cookie就是浏览器储存在用户电脑上的一小段文本文件,cookie是纯文本格式,不包含任何可执行的代码。一个web页面或服务器告知浏览器按照一定规范来储存这些信息,并在随后的请求中将这些信息发送至服务器,web服务器就可以使用浙西信息来识别不同的用户。大多数需要登录的网站在用户验证成功之后都会设置一个cookie,只要这个cookie存在,用户就可以自由浏览这个网站的任意页面。
cookie和session的共同之处在于:cookie和session都是用来跟踪浏览器用户身份的会话方式。
cookie 和session的区别是:cookie数据保存在客户端,session数据保存在服务器端。
cookie数据存放在客户的浏览器上,session数据放在服务器上
cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗,如果主要考虑到安全应当使用session
session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,如果主要考虑到减轻服务器性能方面,应当使用COOKIE
单个cookie在客户端的限制是3K,就是说一个站点在客户端存放的COOKIE不能3K。
所以:将登陆信息等重要信息存放为SESSION;其他信息如果需要保留,可以放在COOKIE中
什么是JMeter
Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于web应用测试,后来扩展到了其他的领域。它可以用于测试静态和动态资源,如:静态文件、Java小服务程序(Servlet)、CGI脚本、Java对象、数据库、FTP服务器等等。
JMeter可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别习测试它们的强度和分析整体性能。
另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证程序返回了我们期望的结果。
为了最大限度的灵活性,JMeter运行使用正则表达式创建断言。
评论