发表于: 2018-01-29 22:46:02
1 684
任务五总结
今天做的事情:完成任务五内容及其官网要求的验收标准和深度思考
验收标准:
1.登录要使用MD5加盐
2.简单了解DES的算法,同样写出心得,放到自己的自媒体(QQ,微博,微信等,记得附上IT真院的介绍,链接,地址,自己的学号,以及称赞老大帅)
验收结果:
1.直接上干货,有价值的知识点我直接放在注解里面了:
控制器中登录方法的实现:
拦截器的配置:
MD5加固定盐:
2.这个我明天写,当面给马正大佬检查。
深度思考
1.什么是session?什么是cookie?session和cookie有什么区别?什么场景适用于session?什么场景适用于cookie?
答:
① SESSION:
session是针对每一个用户的,变量的值保存在服务器端,通过SessionID来区分不同的客户,session是以Cookie或URL重写为基础。默认使用Cookie来实现,系统会创造一个名为JSESSIONID的输出Cookie,或称为"Session Cookie",以区别Persistent Cookies(通常所说的Cookie).Session Cookie是存储在浏览器中,并不是写在硬盘上的,但是把浏览器的Cookie禁止后,使用response对象的encodeURL或encodeRedirectURL方法编码URL,WEB服务器会采URL重写的方式传递Sessionid,用户就可以在地址栏看到jsessionid=A09JHGHKHU68624309UTY84932之类的字符串。
通常Session Cookie是不能跨窗口使用,当用户新开了一个浏览器进入相同的页面时,系统会赋予用户一个新的SessionID,这样信息共享的目的就达不到,此时可以把SessionID保存在Persistent Cookie中,然后再新的窗口中读出来,就可以得到上一个窗口的SessionID了,这样通过Session Cookie和Persistent Cookie的结合,实现了跨窗口的会话跟踪。
session的工作原理
就session的实现而言,好像是这样的:
(1)当有Session启动时,服务器生成一个唯一值,称为SessionID(好像是通过取进程ID的方式取得的)。
(2)然后,服务器开辟一块内存,对应于该SessionID。
(3)服务器再将该SessionID写入浏览器的cookie(一些在网页的源代码中有所体现)。
(4)服务器内有一进程,监视所有Session的活动状况,如果有Session超时或是主动关闭,服务器就释放该内存块。
(5)当浏览器连入IIS(服务器)时并请求的ASP(脚本语言)内用到Session时,IIS(服务器)就读浏览器Cookie中的SessionID。
(6)然后,服务检查该SessionID所对应的内存是否有效。
(7)如果有效,就读出内存中的值。
(8)如果无效,就建立新的Session。
注意:
(1)在大浏览量的网站,Session并不保险,我们过去的网站就经常碰到存在Session中得值不正确(可能出现重复的Session ID)。
(2)Session ID不能从硬盘上的Cookie文件获得,如果想在客户端获知自己的Session ID,只能通过JavaScript来读取。
②COOKIE
所谓Cookie,只是一条极为短小的信息,它能够被网站自动地文本方式放置在一台电脑的硬盘中。通过Cookie,网站可以识别你是第一次访问,或是又一次访问它。网站还可以利用Cookie了解你对哪些内容感兴趣,收集与用户有关的信息,例如记录自动登录的时间限制,记录用户名,投票仅一次的限制等等。在你浏览某些网站的时,网站的程序会在你不知不自觉中将一个小的Cookie(作为一个文本文件)存储在你的硬盘中。如果你想知道自己电脑里都有什么样的Cookie,那么请在Windows目录下寻找Cookie的文件夹。
去除Cookie
如果你不想在电脑里存储Cookie,可以改变浏览器的设置。具体方法如下(以IE为例):
启动IE,找到“工具/Internet 选项/安全/自定义级别”,这时你就可以看到如何处理Cookie的不同选项了。这种方法适用于IE 5.0以上的版本。
以上都是我抄的....不过我的确有好好理解过,并加之实践,重点是token内容的意义。
简单总结:session是针对每一个用户,也存在有session的“cookie”(用postman测试登录界面,会发现至少有两个cookie,其中一个就是JSESSIONID),与真正的cookie不同的是:它的信息储存在服务器上的。一般重启浏览器,这个JSESSIONID信息会改变,也就是原来那个已经失效了。利用这一点,我们可以通过cookie匹配session的方法来保证cookie不会被窃取滥用。
但不管怎么说cookie肯定有不安全的因素,会引发各种XSS漏洞,本次任务中,我对照百度百科中的五条建议,成功防御了它所说的漏洞,包括重放攻击和挟持。
2.拦截器、过滤器、监听器各有什么作用?
过滤器(Filter):当你有一堆东西的时候,你只希望选择符合你要求的某一些东西。定义这些要求的工具,就是过滤器。
REST风格过滤器和中文过滤器:
我的理解是:过滤器是对信息本身进行预处理,作用范围在servlet容器以外,一般都配置在web.xml中,在进入前端适配器之前就执行。
拦截器(Interceptor):在一个流程正在进行的时候,你希望干预它的进展,甚至终止它进行,这是拦截器做的事情。
bean类的配置见顶部。
/在配置文件里面有特殊意义,因为url是面向路径的,遇到/u后面有多个/的,需要加上**才能匹配得到。
拦截器包含事务逻辑,是嵌入到servlet之内的。
监听器(Listener):当一个事件发生的时候,你希望获得这个事件发生的详细信息,而并不想干预这个事件本身的进程,这就要用到监听器。
spring对webapp进行了监听,用来获取信息和触发其他操作,可以看到,它在进入前端适配器之前就起作用了。
今天的收获:完成了任务五
今天的问题:暂无
明天要做的事情:完善任务五代码细节,复习,有空就继续任务六
评论