00:00
好,那后来说一说啊,说说这个防止恶意登录,那么我们说啊,呃,为了防止用户啊在网站使用过程中进行恶意登录,那么我们采用令牌,那么这个令牌可以是任何的一个东西啊,它就是一个标识物,在这里边呢,我们选择用session选作为这个用户的令牌,那么这种做法呢,也是非常常见的,那么选到这个令牌之后呢,那么接下来在开发过程中出现两个问题,第一个问题是什么呢?那么我们说呢,需要被保护的RA在一个网站中会很多,那么这就意味着每一个在开发过程中的时候呢,那么都得去索要当前用户的session,那么进行相关判断,它会增加我们重复代码的开发功能量,也会增加我们开发难度。那第二问题呢,我们说静态文件里边是没有办法去索要当前用户的这个令牌的,所以此时防护,我们在防护过程中的时候,只能防护动态文件,不能防护静态文件,那么为了解决这个尴尬的问题。
01:00
那诶,我们把过滤器引入进来了,那么我们的这个过滤器呢,会在他CA针对当前网站中所有所在文件调用之前都进行一次拦截,那么拦截之后呢,那么他呢,将来索要这个被拦截用户的私人储物柜,如果被拦截用户呢,能够提供这个私人储物柜,我们则放行,如果他提供不了呢,那么我们呢,将会代替我们的toca来拒绝这个用户。那么在这个过程中就出现一个问题,什么问题呢?既然我们是对要求to盖在调所有资源文件之前,那么都拦截,那么此时如果一个正常的用户他想呢,进行登录验证,也就是说当他通知tomcat要去调用loving serve life的时候,就比较尴尬了,在他们调这个券之前,我们的过滤器会蹦出来,蹦出来之后呢,那么他会询问这个用户,你有没有session,这不道我要有session了,我干嘛做登录呢,对不对?所以在这个时候就产生尴尬场景,谁都别想用这个系统。那么怎么解决这个问题呢?我们可以去参考一下。
02:09
那么参考什么呢?来,我们打开浏览器,咱们看一下去到一些典型的门户级网站中去看一下,呃,比如说看最简单的我们看啊,刚才我们说的这个网易啊,网易的这个邮箱,好了,我们进去看一下啊。这个呢,是一个非常简单的网易的登录邮箱界面,好了,那我们看这里边户名密码比较相似,那么这个时候呢,我们呢,呃,在浏览器中呢,单击鼠标右键查看网页源代码。好了,在这,那么看这个源代码有什么可看的呢?我们上面找一个单词,找一个单词CTRLF,然后写成什么呢?它叫做loging log音翻译成中文是什么呢?就是登录的意思,那么在这里边你可以发现什么呢?咦,这个不起眼的登录音法中呀,那么叫做log鹰的内容,那么总共有60处之多,那在这里边我们去看看啊,那么比如说标签的ID啊,那么包括呢,我们所要加载的这个图片啊,它的名字都叫做log音。
03:13
那么为什么我们说这里边有这么多log呢?其实很简单,它恰恰是在我们防止用户恶意登录过程中那么一个典型的解决方案,什么解决方案呢?就是我们说啊,在防止用户恶意登录过程中的时候,不是所有的资源文件都需要被过滤器拦截的,那么哪些资源文件不需要过去拦截呢?实际上呢,就是我们说的这个登录页面以及登录验证是rap这两个资源,我们的用户在索要过程中的时候,过滤器呢,是直接要放行的,那么在这里边我怎么知道当前用户他请求的是与登录相关呢?首先呢,在命名上我们就要下文章,你看啊,在实际添加过程中的时候呢,那么所有在loging页面里边所出现的资源,比如说CS的文件加文件,图片文件,那么这些文件他们的名字上面都要有一个logo。
04:13
那再比如说我们负责登录验证的,它的请求地址呢,请求地址里边也应该有得乐,所以大家可以看到看这。我们雷动项目这里边大家请看啊,在最开始开发的时候呢,我们的这个登录啊,登录申请页面名字叫做log in,那么在请求它的时候,里边有这个log证的标识,那么来进行我们用户登录验证的这个rap,那么他对外的这个请求地址,我们最开始是怎么写的呢?也把它起名叫什么呢?叫做乐音,哎在这儿,那么如果用户所访问的这个资源文件,他的名称里边有了回英,这意味着这个文件是与登录验证相关的文件,那么此时我们就直接放行,就直接放行,不做任何干扰,这是我们在做防止恶意登录过程中唯一要放行的一种资源,登录页面登录验证登录页面登录图片,登录页面中的CSS,登录页面中的javascript,诶,我们都要做放行,那么就是时候在过滤器里边,我们要重新去推一下啊,把专源代码呢,抹掉,诶抹掉。
05:25
好了,好来。那我们去看看啊,那么我们的思路是什么意思呢?你想知道用户访问的文件资源文件给你,资源文件里名里边有没有那个音,首先得知道用户这次到底访问是哪一个哪一个文件,那么根据之前知点我们讲过啊,当洛亚琪发请求的时候呢,我们说在请求包中的请求行里边呢,会有一个URL属性,那么这个URL属性里边呢,那么将会存放到我们的请求地址以及相关的资源文件名称,所以只要拿到URL,我们就能知道当前用户所访问的这个资源文件里边是否包含了导音啊这个内容好了,又因为URL太长了,太长了不是很方便,所以我们呢可以读取什么UR,那么UR呢,我们之前讲过,首先呢,它并不存在于我们的请求包中,它实际上是从URL里边所截取的一段字符串,那么这个字符串里包含了什么呢?包含了当前的网站名称,包含了这个当前的资源文件名称。所以我们看。
06:28
第一步啊,过来。首先呢,我们要去调用,我们看一下啊,调用调用我们的请求对象,读取当前请求包中啊请求,请求包中这个请求行中的这个UI来干嘛呢?来了解了解我们这个用户他要访问的这个资源文件啊,资源文件是谁啊是谁好了,那么这里边把request拿过来,然后点写上get request u好了,那么在这里边我们看一下,那么里边呢,就是斜线网站名。
07:09
啊,斜线网站名称斜线我们说的什么呢?这个资源文件名称啊,资源文件面好,那么这里边可能是什么呢?斜线my web线my web就表什么呢?这个 lovein.HL那么也可能是什么呢?我们说斜线my web斜线老个音,当然了也可能是其他的资源统计。甭管是什么,我们先把它拿出来握握着这个UI我们就能知道,诶当前的这个用户,他这把要防的是哪个资源文件好了,那么拿到手之后呢,那么接下来我们往下去做啊,我们看一下。那么看第二个,第二步回来说呢,呃,如果本次请求的这个资源文件,那么与我们的登录相关,与登录相关,那么主要指的什么呢?主要指的是本次请求中人家要访问的是log.hl文件,那么或者是什么呢?或者是我们说这个叫做log in so life在这,那么此时我们应该是无条件的放行啊,无条件的放行,那么现在呢,诶,我们就去看一下啊过来,那么这里边呢,可以做一个小的一次判断过来啊它。
08:32
说什么呢?诶,Log in,然后点什么呢?Ind desk of,然后写成UI,说它干嘛呢?说它不等于负一,什么意思?Index of呢?它将去返回什么呢?呃,Index of同用返回我们当前啊,当前这段内容在这个字符串里边第一次出现的位置啊,第一次出现的位置如果在当前的这个内容里边没有这个字符串将返为负一。
09:03
那么如果是说不等于负一呢,说明这个内容里边一定包含了love in这个内容,那么说明本次请求的文件呢?诶,就是我们说与我们的这个登录文件登录资源相关的文件,那么这时候做无条件放行,我们把过滤器链条对象叫过来,那么在里边呢,把我们所拦下的请求对象和我们拦下的显要对象交还给他们cat,让他们cat特呢来去进行相关的放行处理好了维ten啊为ten,那么除此之外呢,还要考虑另外一种情况,什么情况呢?默认访问,什么叫默认访问呢?用户呢,他呢,在使用过程中只写了要访问的网站名,但并没有写他要访问的是哪个具体的文件。那么这个时候呢,根据我们网站中所设置的默认欢迎文件的规则,我们看一下在哪里,在这儿,那么针对默认请求的时候呢,那么我们的这个TOD。
10:04
我们的这个tocad啊,那么在这里边呢,它也会调这个王文音,所以针对我们网用户对网站发起的默认请求,我们是不是也应该做放行啊,好了,那么这个时候我们去看看啊,回到我们当前的这个过滤系中,然后我们再写上另一个条件,说获得关系或说什么呢?说在里边先我的网站名斜线my web好了斜线,然后点点equals,然后写上什么呢?呃,写上我们的U默认访问,如果你是默认访问的时候呢,我们给你提供的也将是我们to,也将调用的是love in这个页面,所以这个时候也做放松处理,好吧,那么往下看第三步,第三步好吧,那么如果啊,如果我们本次的这个请求,他呀访问的是什么呢?是其他的这个资源文件,那么需要干嘛呢?
11:04
啊,需要得到我们说这个用户在我们这个服务端,在服务端的这个私人储物柜就是令牌,令牌好了,然后在这里边呢,那我们去说明一下啊,上面先上STP,先是初始值呢,先设为啊。请了数值是是捺N,诶我们看一下。好。点错了,然数值呢,我们就设应当行了,数值设应当,然后在这里边去索要它,那我们写上section等于request,点什么呢?Get section false get false需要一下,那么get false呢,我们说呢,如果用户在服端有柜子,就把柜子返回,如果用户在服务端上面有柜子,则返回了是一个now,好了,那么根据这个来进行处理,好我们看一下啊。
12:00
说在这里边呢,做一个if判断,做一个if判断说怎么意思呢?说在这里边如果section它不等于now,如果session不等于当怎么办呢?那么我们依然做放行处理,那么把中间代码呢给这一放,放行不管了,好了,如果session,如果这个意图没走这块说明什么呀?Session审应该就是什呢,那么三审呢,在这里边怎么办呢?第四步,第四步干嘛呢?我们要做的是什么呢?做的是拒绝啊,拒绝这个请求,因为你能把请求发过来,但是你还没有柜子,只能说明你呢是恶意登录的。那么这个时候呢,我们要借助于我们此时就通过这个request点2GET requestpa,那么我们要向tomca去索要另一个文件,说你别给他调这个文件了,你调另一个文件了,哪个文件呢?诶,就是我们说的这个log in,咱们写上error.ht文件好了,点forward,然后写上the s request s response就行了。
13:08
在这,那么这是我们昨天留给的这个内容中的一个什么呢?啊,这个内容,哎,在里边好了,那么现在呢,我们去测一下,我们去测一下啊,那么在这里边呢,我先设置一个断点啊,设置一个断点。然后呢,我们去调一下啊。同来同步更新是要有的,是项目呢零六要有的,OK,是启动大家看啊,在我们启动com开的时候呢,I idea呢,会弹出一个浏览器,帮助我们开发人员向我们的tomcad发起对当前网站的一次默认请求。好了,那么这个默认请求呢,发送完毕之后呢,Tom get,诶,我们看看啊。哦,出错了。出什么错呢?大家看啊,这异常combination link field,这个没什么大事,也就是说看到这异常的时候,它只能有一种情况,你的ma服务器关闭了啊,Series m Mac进来,大家一定要学会看异常啊,一定要学会看异常啊,那重启一下。
14:18
呃,你只会写代码,但是你不会调异常,那同你在开车的时候呢,干嘛呢,你呀,你把这个刹车给掰掉了一样,它停不下来的啊停下来的好了,我们重新走一下啊,关一下。过完之后呢,我们重新重新启动一下server,好启动走。在启动过程中,Idea会弹出一个浏览器,弹出浏览器之后呢,向我们他们的索要,向他们发起什么发起请求来访问,向当前网站它前面请求,所以这时候你看断电已经挂起了,断电已经挂起了,看到没有,然后在这里边我们先拿当前请求地址,那么当前请求地址是多少呢?我们把UI在这一放,你看一下斜谢myma,这是这是idea打开一个浏览器,那么像当前的麦网站发起了一次默认请求,好了,那么这个请求给到to之后呢?To是不是要去调静态资源文件,要调不要调,我们默认欢迎文件在调之前被用我们拿下来了,来了之后呢,我们就问问,就问问说你当前的这个uri里边的值是不是我们说只有我们的网站名呢?如果是,那么则放行,你看到这儿放行了啊啊走,那么现在我们把什么呢?我们把这个登录页面给了我们的这个用户。
15:43
诶,我们看一下啊,在这里边快速走一下行了,那么就是这个登录页面,那么现在呢,我呢写上了我叫Mac,然后呢,我写上我的密码123点击这个登录,那么此时要求浏览器呢,向toca索要MYB网站中的log,好发起请求走,那么在汤姆特收到这个请求之后,准备去调login s的时候呢,我们的过去又出面拦截了。
16:12
在这,那么他问他们看的这一把要掉谁呢?他们敢说这一把人家要掉的是我们钢铁网站中这个叫做斜线logo英资源,那么由于这个资源呢,它里边包含log in,属于与登录相关的资源,那么此时依然做无条件放行啊无条件放行好了,然后呢,现在程序呢,我们看一下啊,诶我们看啊在这里边啊,我们看看啊,说我们这个资源里边呢,有了它了啊,我们看看啊哦,它为什么,它为什么这一块呢?呃,进到这里边来呢,因为写反了啊,应该写反了,应该写的什么呢?接的是ui.inex of老个啊这块写反了,所以在这里边呢,我们先把这先把这块呢,先跑步啊,这块是实际上是写反了啊,这块实际上写反了,我们看一下,那么在这里边呢,写上啊。
17:09
说呢在这个UI里边,那么关于我们说的这个什么呢?关于我们说的这个log音,关于log音这个内容出现位置不等于负一啊怎么怎么样,行了,那么现在呢,我们再重新来一次啊重新来一次好了,默认请求进来了,说我呢叫做Mac,然后呢我呢密码是123啊登录好我们看成功进来,成功进来这是合法登录的,好我们把浏览器关掉,把浏浏览器关掉意味着什么呢?意味着我们我们当前用户啊结束网站使用了啊结束了,那么现在呢,我们再来一个用户来打开。好了,那么这把我将扮演的是什么呢?一个非法恶意登录用户,那澳门写啥?首先我们在倾向缓存,要不然不倾向缓存的话呢,要不然就尴尬了啊清理一下好了,清理完毕之后呢,我们看写上啊,写上什么呢?HTP,然后在这里边,然后写上local post,然后写上8080。
18:13
其他网站名称my flag行了,然后现在我们呢,向诶在里边别发文人请求了,在这里边我们访问什么呢?User find s,这是一次什么呢?妥妥的妥妥的,这个恶意登录了,好,我们发请求走看是什么效果呢,被拦下来了。你没有这个令牌,没有资格重新登录去吧,那么这个问题搞定啊,这个问题呢就搞定了,大家看一下好了,那么这个呢,就是昨天留给什么呢?大家的这个作业啊,留给大家作业在里边啊,王瑾22行呢,陈凯已经说清楚了,如果当前访问的这个资源文件里边包含了不应放行,或者是当前是默认访问的时候,也是放行啊,也是放行在这里边,实际上昨天让大家思考的就是这么一个内容,在我们未来的工作过程中的时候呢,我们在项目组里边儿经常要做的一件事情就是代码的修改啊,代码修改,那么在代码修改过程中呢,他实际上比你从头到尾去写要难得很多,为什么呢?首先你先要去了解你所修改的这段代码具体有什么功能,然后呢,你还要去了解什么呢?这段代码在整个流程里边属于哪个环节,然后呢,接下来你要去读懂这个代码的细节,在真实添加过程中大家注意。
19:34
在真实涯过程中,我们的命令上面是没有注释的,虽然我们说在学习编程第一天,老师就给我们讲过,在写命令过程中的时候呢,应该是写注释的,但是在真实添加过程都能说由于种种原因,我们的代码上面是看不到注释的,甭管是大公司还是小公司,只要是国内公司,他都有这个特点,代码里边没有注释,实际上这也是我们中国成员他他的一个什么呢?他的一个序号说什么呢?
20:03
我想知道你的技术水平怎么样,最简单方是什么呢?哥学代码,哥学的逻辑你能不能看懂,你能看懂我的代码,说明你的水平,哎,跟我差不多,你要看不懂我的代码,那说明什么呢?说明你的水平言因文比我差,所以在真实项目组里边,你的代码里边你是看不到业务的,所以脑海里边那有流程图,你得知道这个类在流程里边扮演什么角色,然后呢,你呀添知它的大体角色之后,然后在这里边儿你再去读这个代码,读这个代码,读代码过程中一行注释都是没有的,然后在读,读过程中,当你读懂之后呢,你会在对应的位置里边,在对应的位置中干嘛呢,来进行相关的这个功能的修改,形成功能修改啊,所以这要求各位同学呢,在做成员的时候呢,你的基本功要非常的扎实,要非常的扎实,否则啊,痛苦啊,太痛苦了啊,行了。
我来说两句