小迪安全课程笔记-2024-十-

小迪安全课程笔记 2024(十)

P31:第31天:JS应用&WebPack打包器&第三方库JQuery&安装使用&安全检测 - 逆风微笑的代码狗 - BV1Mx4y1q7Ny

看今天内容啊,今天呢已经31天了,这个JS呢讲一下这个打包器和第三方库的安全,这两个呢其实属于属于这个JS开发中的一,个拓展部分,他这两个呢主要是会涉及到一,些安全的方面的问题。

所以我们把它单独拿出来讲一下,其他的呢,我们前面讲的都是关于这个JS的开发啊,这两个呢就是在JS开发里面会用到,经常会用到两个东西,一个是这个打包器web pick,还有个是这个第三方库。

我们举例的是这个接口,而这个接口呢是使用面,目前市面上份额较大的一个库啊,这两个呢是有一些安全问题的,就是你在使用不恰当和使用不当的时候,使用版本过低呢会有一些安全问题,那首先呢我们先来说第一个。

就是关于这个打包器的东西啊,先先先先先说这个第一个啊,打波奇的东西,这个one pick他是一个什么东西,什么叫打包器啊。

我们呢先来解释一下这个打包器啊,这个网上有篇文章,是关于这个打包器的一个介绍,他说是干什么的呢,那有个微信号公众文章啊,什么是web pick,他说我pk呢,它是一个模块打包器。

在web课中呢会将前端的所有资源文件呢,都当做模块处理,然后呢是生成对应资源哦,这个究竟有什么作用啊,我给大家这样去理解一下啊。

我们先要搞清楚它的应用啊,就是为什么有这个东西,它有什么作用。

然后呢我们再来说这个其他的事情啊,好我们在这里呢新建一个文件,好新建个文件夹吧,在这个文件夹在桌面新建的吧,啊就叫做这个w p code啊,然后呢我们在这里打开这个文件夹,打p code,好啊。

给大家看一下啊,那么现在呢我们来理解一下,为什么也会用到WWPICK这个东西啊,呃很讲道理啊,你看我们在这里呢可以创建这个,先创建一个目录,名字就叫SRC,好在SRC里面呢,哎这里是文件夹啊。

SRC里面呢我们创建两个文件啊,名字呢一个叫做这个,啊一点JS,然后呢再搞一个这个文件叫R点JS,那一点JS里面呢我们写上这个东西,下一个就叫这个test啊,就写这个简单代码啊,看这个logo搜了嗯。

去打赢一下这个test好,就写个东西,二点JS里面呢我们就直接写上这个test函数,那就这样写好,那么现在呢我们来给大家看一下啊,再在这里呢创建一个这个index ATM号。

在index tattem上,这里让我们来做个实验啊,好,好这里呢我们来看一下啊,我如果直接引用R点JS,我来这里呢直接引用这个二点JS,就是SRC下面的这个二点JS,用这个R点JS这个文件对吧。

那么这里呢20JS呢是调用这个test好,它能不能输入成功呢,我们来看一下啊,运行,然后我们看一下正面的一个控制台这里,那你看到他说了,Test is low defined,就是test。

那这个没有定义,所以说调用不了对吧,那需要怎么办呢,是我们这里呢就需要这么办啊,是不是还要引用这个疑点JS啊,好我想问一下大家,我把这个疑点JS呢引用了,再引用这呃,再引用这个这个这个地方。

那么大家问一下大家,这里能不能成功输入,我先问一下大家啊,能不能输入啊,这里这个地方能不会这个数,能不能执行这个这个test,这里调试这个终端,这里显示这个test可以是吧,好有人说不能。

那不论是什么原因啊,但不论是什么原因啊,你觉得我这样问就会不冷是吧对啊,有人说对了啊,那你看一下刷新,有人说冷,有时候不冷,我们刷新一下看一下啊,那还是不能,为什么允许问题,你把它写到前面才行。

因为他是先声明后调用,你要先引用这个E再了,有这个函数被声明了,or呢再调用,那这里呢它就对了是吧,你看这里就有了是吧,是这么个情况啊,好那么这是我们说的这种常规类的这种开发,对不对,那大家试想一下。

如果说有大量的这种JS文件的话,你要一个个引用,一个个引用,它是非常复杂和麻烦的,那么这个web pick呢就能解决这个事情,就是说它可以让这两个文件的代码呢,写到一个里面去。

就是把多个这种类似的JS文件的调用关系呢,把它放到一个JS,就说如果这里有多个三个四个甚至十个,我们可以把这十个呢打包成一个,那么这样子呢就更加的简洁了,所以web黑客呢他就是做这种类似事情的啊。

他就是做这种类似事情的,就说你在不需要的去引用这状态下,这是它的一个功效,第二个功效呢就是它实现了模块化,就是它的代码呢看上去那更加的规准啊,更加的规矩,便于后期的维护和开发。

这是他的一个欧佩克的一个实现,那么接下来呢我们就来演示一下,这个web pick的一个简单使用,在使用的时候某些配置会导致一些安全问题,那么我们呢就通过这个使用过程中呢,去给大家做演示啊,首先呢赛的。

那我们先给大家去演示一下,这个WEBKK的一个使用啊,那么它是分为有几步。

第一步呢是创建需要打包的文件,第二个呢是安装这个WP库,第三步呢就是这个创建这个配置文件。

最后呢运行这个打包命令嗯,在我们给到的这个文章里面呢,它是有这个大概过程的啊,这是我们要做的事情,我们在那可以写这个两个东西啊,来一点PS里面呢我们去这样写一下,好我们这里呢可以定义一个这个叫sum。

然后呢传递两个参数X和Y,然后呢在这里那就不显示了,就直接return呢返回这个X加Y,那这里呢就是说啊这个funky呢,额sum呢就是类似加法嘛,就是两个参数进行相加,好在二点P里面呢。

好我们也写上这么一个东西嗯,写上一个叫costs,然后也是SY,这里呢我们就换成个,减法,好那这里呢就是这个嗯一个二点JS呢,就这么些好,再来在这里呢去写一个这个量主函数,写个主函数啊。

主函数这里那就怎么样呢,就input来导入这个sum for来源于一点,这个是COUT来源UR,这个意思呢就是从这里呢去导入它,这个呢是不是这个这个语法呢,是这个WEBPACK识别的语法。

并不是这个node js和JS语法啊,你用node js去运行这种语法,它是没有的啊,呃road node js里面的是这个require啊,你要用打包器的话,就必须要用到这种语法。

然后呢我们现在呢对它进行一个调用啊,那我们可以进行一个这个叫console logo啊,调用这个sum,然后呢里面全参这个是相加,我就是1+2把打印,再来一个这个,哎再来个这个CONET。

哈哈这个是相减,我就2-1嘛,二杠一就传递这两个参数值嘛,他这两个就是XY嘛对吧好写这东西之后呢,你看一下啊,这是ml js,然后我在这边的去引用这个MAJS,看一下他能不能用啊,先给他看一下。

我们来运行一下这个地方啊,我看这里有没有这个信息,看一下这里控制端,然他可以看到啊,他说不能用到这个input,因为他不支持浏览器,它不识别,所以他把它进行打包之后呢,他就能识别了,那如何进行打包啊。

符号写错了呀,BGFALL写错来,哦这是2。1是吧,那这个无所谓的啦,这个也不影也不影响这个地方的一个情况啊,差点等下死的时候呢,又里面的尴尬了,哎呀是吧,还好发现的早,不然等下又翻车了,又要被骂一顿。

那那那那把进来这里呢不识别啊,这就是就是这个语法呢,不是这个男生态和log s语法,这个是web配合给web配合看的,就是说高速web配合,那他要引用这这两个东西好,那么现在我们看下如何进行打包啊。

打包的这个过程呢就是这个要创建好了,然后呢安装库这个库呢给他安装一下啊,就是NPM,N b m,啊杠I,然后呢web pick,然后web pick c r i,一般安装这两个杠D或杠机。

就是说全局安装的意思啊,把安装一下,哦这不不不杠A啊,直接开,不要杠A,打错了,小写I,安装一下啊,杠机啊,杠机都可以啊,一个是全局安装,一个是本地安装,好把它安装一下,把两个库安装一下。

好安装好了之后呢,那接下来呢我们来给大家演示一下啊。

他如何打包,打包了。

可以用命令打包,最好呢就是用这种网上教的方式,就是在这里呢创建一个这个打包的一个,配置文件,就叫web config js文件,在这里呢来配置你要打包的项目和。

打包的模式和用到的插件,它这里呢有五个点,第一点就是设置入口文件,就是你要打包哪个地方,第二个呢就是把它输出到哪个地方,第三个呢就是你用不用一些这种他说的加载器,这个加载器是什么呢。

就是说web k可能它默认只支持打包JS,如果说你要打包什么这个ATM文件呢,或者是什么CSS字源呐,就要用到一些这个加载器,这个加载器呢要自己下载,我们现在只演示打包JS啊。

这些其他东西都不是我们需要考虑的呃,插件就是这个意思啊,插件就是说一些诱惑,插件模式呢有两种模式,一个叫生产模式,一个叫开发模式,等下我们会说啊,这个模式非常重要啊。

生产模式呢和开发模式不一样的开发模式,那是给程序员自己看的,用来调试一些错误和bug的,而生产模式呢就是我们常说的就是线上模式,就是这个已经放到这个产品中,上线了,就会用到线上模式。

就是我们说的这种类似生产模式啊,就这五模式,然后呢你可以用一下它的配置文件。

那就这样的一个情况啊,就直接在人家创建一个这个文件,这个文件呢名字不能改的啊。

其他名字可以改,但这个名字不要改,这个名字不要改啊,好在这里呢我们创建嗯。

这里呢就用它一个模板啊,这模板呢是根据自己需要添加啊。

我们来给大家看一下,模板里面呢这里有个喷漆,然后这里有个路径地址啊,这个是入口,然后在模式呢你看路径那就是要打包哪里,我们就打包这个SRC下面的这个mail点JS,就是我们说的那个入口文件。

就enjoy入口嘛,好吧好,打包入口文件下面呢额下面呢就是这个输出的,那输出到哪里,我们把它输出到哪里呢,输出的名字呢我们就把它叫做APP点JS,然后路径呢就是在当前目录呢取个名字,就叫built啊。

这是路径是吧,好这里写好,然后模式这里呢我们写的是这个诶,这里怎么报错了呀,还我这里少写了一个分号啊,我把这个写到下面来吧,选下面的,少写个分号啊,他这里是一个逗号的一个意思。

好那这里呢就是这个打包这个配置呢,我们就配了好啊,这是我们要打包的文件,然后呢这是他的一个打包输出的一个文件名啊,然后输出到这个文件夹,然后以这个开发模式呢去打包好,这里配置好之后呢。

就直接可以运行一个叫NPXWEBPACK,n p x will pick啊,刚NPM那是这个安装库,NPS呢运行这个work pick直接回车,它会自动识别这个文件,以这个文件的配置呢为打包回车。

哎报了个什么错误啊,啊文件出来了,但是这里呢报了一点错误啊,我看一下啊,那这个是他打包好的一个app文件啊,那这里有了已经我看一下啊,他这里报了个什么鬼东西啊,哦我大概知道了啊。

这应该就是那个哭的一个路径安装的,问题,我们先运行一下这个app s,看他能不能加载运行啊,看看有没有问题哎,重新在这里呢,调用一下这个built下面的app js这个文件,来运行一下这个文件试一下啊。

看看结果好,这里呢不能发现模块一样哦,那就是还是打包错误了啊,唉那应该是刚才这个地方安装库的时候,那个路径不对,先把它暂停掉,3c,重新来看一下啊,这边是一个什么错误,唉这个打包,说实话。

这他妈的真是麻烦的事,打开这个项目看一下,在哪里,大家以后安装的时候,这库那个参数,全局安装那个,点点斜杠是这里问题吗,快下啊,应该不是这个问题啊,我看一下啊,11我已经感觉是库的安装的问题。

那他果然是铺的那个安装问题啊。

不是这个问题,库的安装路径的问题啊。

他这里报的是那个路径的一些错误库,安装的时候应该不要加那个,刚刚刚刚什么鬼积的好,我们用这个P1,这边的这个叫跑哪去了,对打开这个看这个啊,这个是一样的道理啊,嗯这个是那一样。

道理呢一样的那个写法没什么不一样的啊,那这个是一样的写法,然后这里呢也是那个一样的那个写法,就是路径上面有些小差异啊,这边是一样的啊,哎看这个吧,就说我换了一下名字啊,这个mail呢也是这个情况嘞。

和他刚才一样,就用两个文件名改了一下,路径呢有一些小微差异,就这个放到JS目录下面,选其他的都一样啊,没没什么太大区别,然后呢这里呢我们看一下,这里呢把它打包成这个叫build js啊。

生成的这个DST目录,这个目录都给自己取名模式呢搞成一个这个,我们先来测试一下这个开发模式,好打包一下啊,来运行一下啊,哎嗯,好这里已经打包了啊,这个就打包完成了,大家看一下啊,啊打包成功。

这里就出现DST,然后这里又出现这个了,绑定到这个点T目录,然后这里有个JS文件,对不对啊,你看这是他打包的一个JS文件代码,那么这个代码中呢,是我们采用的是这个什么JS的一个打啊。

web page打包用的是这个开发者模式,这个是开发者模式啊,这个是生产模式,开发模式打包出来的就是JS文件,大家可以看到这是开发者模式打开的,然后现在呢我们再用这个ATM文件呢去引用它呢。

去引用这个DAST下面的这个built gs,我们现在来打开一下这个ATM文件啊。

看一下啊,在这里让我们运行一下这个来看一下,你看一下现在结果啊。

空出来这里那是输出一和三呢,这个E3怎么来的呀,因为他打包的是这个main函数,这个main函数呢,是不是这里的main函数啊,然后这里co的权利二和1code,但是难于这个JS的这个文件。

那就这个文件,然后是怎么减去它的意思,所以呢就是R减一是吧,就是R减一传递的是R2121嘛,上面的就相加2+1。

所以真的就是一个等于一,一个等于三,那么输出结果就是刚才给大家看到的啊,那个结果。

对不对,那其实就是说将这三个文件呢,封装到了一个里面,就是这个built js,就其实说你原本的是这三个文件的去引用对吧,就是mail文件呢去引用这两个的,然后这两个呢一个是做相减,一个呢是做相加。

然后这个mail那就是两个的调用,所以呢他引用两个,然后呢一个做相减,一个呢做相加,上面结果呢就是一下面结果是三,那么我们如果说之前要用的话,是不是之前就是怎么个操作啊,是我们之前那种没有打包之前。

可能就是这样子的呀,没有打包之前,就肯定是这个SRC下面的这个什么,一个是萨姆,阿SAM下面的这个sum,JS下面的这个sum js好,然后呢,下面这个就是那个JS下面的这个什么court cs。

对不对,还有一个呢就是我们这个SRC下面的,JS下面的秒啊,不不他不建设,就是这个当前目录来,就说以前的话啊,这是没有打包前,就说你这样去用,对不对,就这样去写,就是这么个写法,对不对。

因为你三个都要调用,你才能把这个结果取出来,对不对,因为他呢就是说定义这个函数呢返回,但是它不显示显示,那是在mail函数显示啊,mail函数要使用这两个的话,就必须要怎么样的呢,操作两个。

所以之前是这样写的,你打包之后,那就是把这三个文件,那个功能呢给他释放到一个里面去了,然后呢就写到这个里面去了,我们就引用这个呢就能实现这个结果,所以这是打包器的,它的一个原因存在的一个可能性。

而且打包后的代码呢,大家可以看到是这么个形式,然后这个模式呢我们不管它,就是我们先了解达帕奇的作用好,我们现在呢主要来分析这个打包器和有安全的,一些影响,是哪些方面的影响啊,我们先来关注一下啊。

这个呢是采用的是叫开发者模式,我们来观察一下,这里呢我们把调试这个ATM文件的时候,去引用这个JS的时候,我们看下这里啊,看下它开发者模式,结果呢是能够输出第一个运行结果为一,就是R减一。

第二个结果是R加一,好输出了,然后我看一下资源文件里面,资源文件里面看一下啊,开发者模式我们打开看一下,那他是有这个DT这里引用这个文件,打开看一下,这里的这个代码,和我们这个代码是不是一致的呀。

那是一致的啊,我就不对比了,它是一致的是吧,一致的,然后这里呢还有下面你看在引用的路径内,三个文件也有,你看是不是就是我刚才的打包的,就这个的文件由这三个文件打包的来的嘛,就是打包的VR文件。

WEM文件引用这两个,所以就是三个文件构成的,就这个文件呢由这三个文件构成,然后你看三个文件构成里面代码呢,这个是那个里面代码,这个呢是里面代码mail里面的,这个是不是差不多的代码呀。

嗯所以说在开发者模式下面的话,他是信息是很全的,能从这个前端这边呢,能看到关于这个整个的一个逻辑关系,并且源代码那他都是能够看到的好,那么现在我们来关注一下啊,我把这个打包后的文件把它删掉。

重新再来看一下这个WEBKK,把它修改成生产者模式之后看一下啊,现在我们来对比一下,这个生产者模式之后的一个情况,重新打包,换到这个生产模式,打包好,打包成功了,我们先来关注下这个文件,看到没。

这个文件和刚才文件出现了不一样的地方,这个文件就是什么代码很短好,当我们去再去访问那个页面的时候,刷新先看这个控制端,这边还是能正常显示一和三,看正面变成了一个什么,那就只有这个东西了,这个东西是什么。

结果为一,结果为三,啥情况,就是他的这个代码,那就这个JS文件呢,就这个东西了啊,他就有这个东西了,所以说呢其实呢就是说这两个一对比,大家就能知道了啊,而且大家有没有关注到。

你看这个下面这边呢刚才这个开发者呃,开发者模式下面还有个那个啧圆的那个信息,但这里呢用这个生产者模式之后呢,只能看到这个包含这个JS了,像刚才我们还是能看到这几个的浏览器里面。

是能看到这几个的一些相关代码呀,但是这个生产模式就没有了,而且大家可以看到它的一个显示的,这个JS的代码呢,就是吧大家可以看一下啊,放大一点就已经和我们那个东西不一,太不是一个逻辑了啊。

正常来讲的话,我们正常说应该就是显示这种情况是吧,这是对的呀,就说我至少能看到这两个东西呀。

但是它直接就是什么个情况呢,就直接把结果给你写出来,其实就是说他已经把它运算的结果显示出来了,这是它的结果,并不是它的过程,所以说啊这是他的底点,那么大家这一点呢其实就是说在打包的时候。

如果呢你在配置不当,把这个结果在打包的时候呢,选择的是这种开发者模式的话,那就会造成一些源码泄漏,为什么这样说呢,因为我再给他试一下,我回过来再看这个开发者模式,我再重新打包,大家看一下啊。

我们再重新打包,重新打包之后,我们再来关注一下,刷新一下刚才那个页面。

结果你看这是开发者模式,你看他是有这个整个逻辑啊,这是不是就是我打包的三个文件的一个关系啊,打包VR my mail里面叫这两个嘛,这不就是三个文件逻辑啊,而且三个文件里面的那个代码。

是和我们的代码一致的嘛,你看你是吧,代码已知的都是用到了console,然后呢后面是这个RERE,然后这个default来源于什么,上面写的嘛,那调用的是这个SC,这个这个这个地方和这个地方。

所以代码呢基本上是唯一的,就是相相当于就是和之前那个代码的一致,就和我们打包之前,这里这三个文件代码的一致内,对不对,而且是能看到没有问题啊,包括这里呢也是一样的,这是他打包代码也非常多嘶。

其实呢它下面呢就是对这个JS文件进行的,这个work pk呢,下面有这个东西,这是两个模式所造成的。

那大家会问啊,他第一个安全问题就是说的源码的泄漏问题。

源码的泄漏问题,那么现在问题呢,一种就是由模式选择上面的一个,打包的一个错误导致的,就是有些人呢啊明明应该是正常来讲的话,就是说放到线上去用的时候啊,我们用这个生产模式的话。

哎他就能把这个源码呢封装好一些,就不能看到一些真实的这个解释是啊,解释性代码就看到是这个解释后的结果对吧,但如果说你把开发模式去打包的话,那么就能看到整个逻辑这个生产模式呢。

那有没有这个网站有这种东西呢,我如果说搞个小网站还没有什么说服力。

大家看一下啊,一个VUE1开发的这个网站,它在WEBPACK打包的时候就不小心呢,用到这种我们说的这种开发者模式上线,导致了他整个VU1的这些源码的泄漏,我们前期在上节课讲的时候。

大家不知道还有没有影响,上节课我们在讲node js呢提过一句话啊,包括这个log s非于yes,这个意思啊,就是他们和那个传统的这种原生态的JS呢,有点不太一样,不一样,就是什么呢,就low js呢。

它是服务端语言,我们当时还说过一个对比,就是说这种语言呢,他是没有在黑盒中是没有代码的,这是我们上节课商过给他提到一句话。

就说你用JS开发出来的网站应用呢,在网站那一边呢是看不到这个源代码的,这是我们当时说过的啊,因为他是一个服务端的一个JS。

我们原生态呢是可以看到的,所以这个V1呢也是这个意思啊,V1也是这个情况,他也看不到,但是如果说你用到这个WEBPER去打包的时候,这个模式上面选择错误呢。

就会造成源码泄露,能不能理解,就像我刚才说的这个这个情况一样的,我在打包的时候呢,把这个东西打包了,结果你看选择错了模式,对啊,三个文件的代码都出来了,这不就是源码泄露了吗,这是它整个的逻辑啊。

能理解吧,如果他选择这个模式,你能看到这个这个什么。

能看到这个东西吗,这是我们写的函数啊,这里面的核心代码呀,能不能理解这个理解之后呢,我们就看实例啊,不能理解我就给他再说一下啊,能理解是吧,湖南话,大家回想一下啊。

上节课我们讲到这个load js的时候啊,是不是就是这个low呃。

呃我可以再给他看一下,我怕有些人忘记了哎。

呃NO js我们说过他和他原生态的不一样。

嗯大家看一下啊,这是之前这个load js的一些东西啊,我看下这个low js之前写的吧,这个是用那个,之前用这个low low js写的这个circle,猪的一个测试页面码是吧。

这是当时写的这个这个这个这个文件,然后呢我们当时也跟他说过,这是他源代码,我们把它运行起来是吧,用LOL去运行这个SQL点JS,用完之后呢,这里呢就是他的网站源码,网站的一个端口也要起1。0。01。

3000端口,好的吧,这是我们那样写的啊。

然后呢,我们之前呢原生态开发是能够看到整个逻辑的,这是在原生代码是吧。

那包括你像现在我们这个源代码能看到吗,那你包括这里我们加了JS文件,看一下呢索引,那就是这个地址,他也是用的原名写的,这里面的代码他能看到吗,看不到,他只看到了这里加载了一个一个ATM文件。

他没有看到其他文件,就我运行的是这个文件,它只加载这个SQL点ATM看到了这里面的核心代码,他是看不到的,服务端的一个情况啊,在里面源代码。

那你看一下这看不到的啊,那只看到这个ATM的一个文件代码什么。

其他都看不到了,就这个路JS代码他是看不到的,主要是三节课锁骨的啊,但是前期我们在讲这个非这种路JS开发的,就像我们前面写的这种AJX的那个请求,AGX请求是在这个地方是吧,就像这个这个ATM文件。

那这也是JS代码嘛,但这种呢是原生态的,不是用node js的语法。

你看这个呢他就能看到整个逻辑啊,这J3码呢它是怎么样就怎么样的是吧。

这是上节课我们说的一个特例,那么今天这个WPICK呢,也是会有这个源码泄不泄露。

能不能看到的情况的意思。

那么他的这个决定因素呢,就是我说的在用这个WEI来打包的时候呢,他的模式上面的一个错误选择,导致可能会把它本身不显示的源码显示了,嘶能理解了吧,嗯原生态的默认就显示弄node node js呢不显示。

但是呢你如果是用WIFI,可能打包node js或打包飞EV的项目,在配置不好模式之后呢,会把它的源码造成泄漏,那么简单一句话呢,我们可以把它归类到这里来写一下啊,首先燃生态的这种原生态。

就是说不使用任何框架,也不使用任何技术开发的这个JS啊,应用他是会直接这个显示它,因为是前端语言啊,他直接呢显示这个这个源代码的是吧,然后呢这个low的JS呢上节课讲的啊。

那么它呢由于是这个服务端的一个语言,它默认呢就是不显示这个,对吧嗯,我们现在呢说了这个web pick这个打包器啊,他这里呢就是很简单啊,这个打包模式,选择这个开发者模式,哦啊会这个招成呀。

这个源码泄露嗯,是这个意思啊,就主要是三点啊,这是我们三节课上了三点,包括导入模式的针对目标呢这个node js开发的呀,VUE1的都会啊,这只要你是用它打包的,不管你是什么东西,他都会泄露。

那么为什么打包我刚才也说了啊,他打包是便于后期的开发和维护,所以他会用到它,如果说他不用到WEBPICK,那是另俗啊,好那么现在我们看一下实例,有没有这种实例呢,有这种情况发生呢,大家看一下啊。

来我们举例子啊,顺丰的一个熟人的一个登陆的,好春风的这个熟人的这个登录地址。

那这是顺丰的这个官方平台,他这里有个登录是吧,你看啊这个顺丰的。

另外他这里呢我们看一下,检查一下,来看一下这个源代码。

这里啊,呃我们可以先用这个谷歌查简单来识别一下,看是不是这个情况呢,它的识别基数里面看到啊,用到是非U1的开发杂项里面有用到WEBPICK,非鱼的我没有讲,但是呢它和load js呢是差不多的一个东西。

你看他这里用到V1的,这里要用到WPICK,我们今天刚讲work pick这个WEPER既然用到了,说明他用过打包。

那么大家看一下啊,我们刚才做实验了啊,我们去刷新这个网站的时候,大家可以看一下啊,在这个地方我们看到啊,在这里呢可以看到呢,这里是一个WPICK,那咱引用了JS文件这些路径,那这引用JS文件。

这是他打包好的JS文件,这是他打包的JS文件啊,这是打包的JS文件的这个路径地址,然后在web page里面他把解析出来了,我们再看web page里面啊是什么东西,大家看着啊,来VUE1的代码。

那login负责登录的,还有这个什么API的一些接口,包括这里的一些CONFIG配置的一些信息,再看这里啊,还有没有些其他的啊,这个是cooking处理的,应该是看这个里面的哦,这里面多啊。

来component里面,那这里有什么一些其他的啊,我看一下能不能你看一下,翻这个下面呢,还有一些这个你比如说负责登录的是吧,找一下这里面有的登录的model,那这登录的那登录成功的一个情况。

和这个登录的情况,打开看,那这个就应该是呢触发的地址呢,导入模块嘶支付是圆通登录,包括这里的这个,但NO成功的这个地方,啊登录成功的一个地址,这个是登录的,这是登录的视图,这边应该是登录的那个界面。

登录成功的,这个是登录的,嗯这个路径啊,这是住在这里,应该是忘记密码啊,登录两个登录,请输入这个手机号啊,你可以看一下啦,那密码登录和验证码登录,这不就是这里的意思嘛,呢验证码登录和密码登录。

那其实这个呢这个叫阿attack login,就是用户登录的一个VUE1,这个呢是采用VUEE开发的一个JS项目,就是他这个登录这里呢是采用VUE1开发的,然后这个是A1的语法。

然后这里的密码登录和这个验证码登录,就这个界面,也就是说这个界面,这个功能呢就是用这个VU来负责,我们就看到他整个逻辑是吧,这是代码是吧,提交之后呢,请输入什么邮箱,是否支持人获取验证码呀等等额是吧。

这里还有个password login登录,就是密码登录的的一些情况,那包括这里呢点击密码登录按钮的触发事件,还有像像上面呢还有一些各种各样的,那其实就说你做到这里呢。

就说他这个等个登录的一个JS的逻辑呢,你都都能看到了,你就知道他是怎么在登录中经过哪些地方对吧,都能看到,你看这里呢还找到了一些这种设备的,一些旧账号和什么旧密码,这些东西你看看。

啊这应该是一个设备的获取,你这个东西是什么鬼,啊密码输入按回车时出发,看什么鬼啊,一大堆啊,其实就是说啊这个网站呢就是用到了WEBPICK,在打包的时候用到了一个开发者模式。

导致这个VUE1的整个代码逻辑,和代码文件泄露,就说原本的话它是用非语E开发的话,你用的这个WEBPAGE的打包,用生产者啊,用这个生产模式去打包的话,他是不会有这些东西出来的。

就是他不会有这些东西出来的,他就不会有这个东西呢,就不会有这个东西,它有的只是啥呢,有的就是这个网站上面加载JS文件,就像这里泄露出来的,就像这种啊,他只会有这种东西出来。

就是他用WEBPAGE打包好的这种代码,这个代码就是完全我们都看不到是啥,就是他全部写好了,就是它的结果,就像我刚才测试我那个一样,就直接把这个结果显示上面去了,这里呢就看到是这个东西就把它封装好了。

意思就是把它封装好了,而你呢这里源码泄露之后呢,你就看它本身的代码逻辑了,它本身代码逻辑是这个情况,那如果你想象一下,在这里如果说有些那种配置性文件,他如果在这里配置的不就泄露一些吗,就很简单的道理。

就像我们之前在做这个这种SQL文件一样啊,就像这种代码啊,这里额写的这个诶文件跑哪去了,那这就是这种啊,这是我用这个呃,LOLJS呢写了一个数据库的连接操作,就像这种本身代码。

这里是不是还有这种账号密码在里面啊,那如果说我把这个项目呢,用这个我配格来把打包,原本呢这个代码呢是不会被知道的,哎结果呢我换成了一个开发者模式,哎他把这个代码呢给泄露了。

那这里呢不就泄露一些这种信息出来了吗,所以说呢他就会造成这个源码泄露,这个源码泄露造成的问题,就是一些敏感的信息泄露,包括整个代码逻辑,就更能方便于我们对这个网站的了解,和它的架构了解。

方便于在里面去翻敏感信息,翻接口去测试一些什么未授权啊,或者说它上面有些功能的一些这种代码性,那至于怎么测,这是我们后面在讲到单独的JS的,这个安全课程的时候呢,我们教大家的一些测法啊。

就是关于JS的常见漏洞测法。

而且呢这里呢我们前期在信息收集的时候呢,给大家讲过一个项目,就是这个叫wo pick,这个一个测试项目是哪个项目呢,叫做,park f u z z这个项目呢。

我们可以看一下他的大概介绍,你看他的介绍是不是就和我们描述的是一致的。

他说的很清楚,这是一款针对WPICK等前端打包工具所构造的,网速快速和高效漏洞检测工具原理是什么呢,他说的原理是这样的啊,你在日常测试中呢会发现,以web配合的打包器为代表的网站。

这类网站呢会整将整个API的和API的一些,结果呢啊,然后呢一起打包,然后呢供这个调用,但是我们往往手工测试呢会极大的不变,代码量呢特别大,这个时候呢他就通过这个WPER呢。

从这个项目呢来从里面去提取一些啊,这个网站地址啊,API接口啊,然后呢去测试一些这种未授权的SQL注入啊,等等等等一些这个信息录对吧,这是他工具的一个介绍,所以说呢这只是说测试的一种工具啊。

更多的话我们还需要用手工的来进行验证。

那么如何验证呢,啊现在呢我们不是讲这些啊,我们只是从这个开发角度呢给大家演示一下,这个pk,让大家熟悉一下,这是个什么东西啊,以后碰到了是吧,他有哪些安全的一些隐患,就包括我们今天介绍的模式的选择。

部队造成了源码泄露,如果没有造成源码泄露。

也可以用一些相关工具呢去调试它,这个JS就是说如果没有下面这个代码的话,你也可以上面这种代码,这种代码呢也能看到一些信息,只是说这种分析下来就更加复杂一些了,能理解吧,这样分析就更加复杂一些了啊。

好这个就是WEBPER的一个课程啊,啊那么现在上到这里之后呢。

大家可以反过来想一想啊,我们介绍到了这个原生开发,介绍loader js开发,然后介绍这个OPEC,大家想象一下,这三个呢都有不同之处,虽然说他们都属于JAVASCRIPT的语言的一个分支。

原生开发呢就是不借助任何东西,自己呢纯用JS代码的去写,low js呢啊就是一个新的东西啊,在他们去开发代码呢更加的快捷安全,然后呢是吧,它也会有一些自己写法上面的安全隐患啊,包括这里也是一样。

那么这个打包器呢它是属于什么,属于这个语言的一个类似的一种辅助类的工具,可以这样去理解它,就好像我们电脑上面呢去用来,去编辑文件的时候啊,编辑记事本本身,电脑上面有这个记事本呢能够去写一些文字。

但是我们呢啊就不一样,我们要喜欢用一下什么notepad加加呀,或者这种SUB呀这种编辑器啊,然后呢打开用tan之后呢,那就会享受它的边界,也会享受它所带来的安全问题嘛,那个打包器呢就这个意思嘛。

啊你在有使用这个打包器呢,享受它的边界的时候呢,那么如果你稍有不深的话是吧,这个打包器上面的配置不当,或等等一些操作原因呢,这可能会把那些本不该处有的安全问题呢出现,那这是他第一安全问题。

还有个安全问题,就是说在第三方库,我们PPT里面呢也有第三方插件,就像什么pp里面用到的编辑器啊,编辑呢是别人提供的,用别人的提供的编辑呢,来实现这个编辑的功能操作,那么在JS里面呢也是有第三方库。

我们前面呢在原生开发的时候呢。

用到过JK,大家还有没有印象啊。

那么现在呢我们来看一下JQUERY的一个操作啊。

那这里呢首先给看一下文章啊,我们先来了解一下,为什么讲它这是后面,那马上在web漏洞中,要给它体现的ZS的这一块的一些安全问题,那JSKY的一个框架库,这里说的框架库呢有些十元素框架,你不说框架也行。

他就是一个库,经常我们用一些扫描工具扫了一些漏洞之后呢,它会包出一个漏洞,他说下一个script代码漏洞,这啥意思呢,然后呢其实呢就是你在这个JAVASCRIPT的啊。

这个JAVASCRIPT的这个是干嘛的啊,我们先解释一下啊,这个库是干嘛的,就这库里有各种各样的类型啊,包括打包器也不只说只有WPICK,只说web pick呢用的比较多,我们拿来讲。

包括这个接口也是一样,网上还有其他库,他是干嘛的呢,前期我们演示过,它主要就是封装好了很多常见的JAVASCRIPT代码,然后呢,你用这些代码呢能够去优化你的这个显示。

包括我们可以用它来去处理这些文本啊,进行这个AGX的一些操作,这都是它的特点,所以呢我们当时在去写这个代码的时候。

大家应该还有印象啊,那像这个。

那这是我们原生态那个logo js嘛,我们把它运行起来。

对吧这种原生态JS,然后呢代码呢也能看到这里引用了一个J块,1。1。24点JS文件,是不是引用这个文件,引用这个文件之后呢,你才能用到这个语法AGX,因为这个语法呢就是来源这个文件是吧。

我们这边可以设置一下了。

艾德米123456,这我们前期上过了啊,点登录嗯,这没反应啊,哦我这里有个login,你pp呃。

哦我那个网站没有把它启动起来啊,要把那个pp study给启动起来才能用啊。

这个不管他了啊,因为这个这个pp他也是用这个pp验证的啊。

不管他呃,我们现在呢就说这里的用到这个操作的时候呢。

是要用到这个地方的啊,用到这个地方的用这个东西之后呢,他才能正常请求啊,啊这个我没有开啊,所以他请求这里呢就没有成功啊,没有那个登录成功那个跳转啊,我们还是启动一下吧。

把这个流程给他走一遍啊,怕有些人呢这个听不懂,把这个启动一下吧。

嗯是这个项目是哪个目录,下面的是这个。

demo吧。

demo下面的,然后是这个J下面的。

好我们来访问一下啊,好我们看一下啊。

这个是之前我们写的那个操作是吧,那他登录失败,因为这个密码错了吧,对密码错了。

他就登录失败,他有个提示,他的正确密码呢是这个小零和1356,我们输的不是这个小迪吗,我输精确的是吧,点登录,嗯这又哪里不对啊,妈的,前面写的项目怎么还给我搞出这些问题来了呀,哦我把这个哎呀。

这个不是我们操心,重要啊,这种前期饮血好带吧,这哪里有小问题,懒得检查了啊,这不重要。

不要老说翻车,翻个毛啊,翻屁啊,这里面前期的讲过东西,翻什么车呀,我真是你妹的无语了,那也是翻车,这也是翻车。

我都懒得修改,这不是我们现在讲的这个支点啊,我是说拿说把这个解释下。

登录失败有提示啊,登录成功还没有提示,这还真是巧事了,应该是我那个这个逻辑上面没有把它返回gold,gold等于。

好不管他了啊,我们来看这里啊,这个是我们前期做的那个实验啊,那刚才呢我们说到了一点啊,他能去请求的时候。

那就这个代码呢他应引用了这个什么JS文件,才引用这个后面这个代码,就说如果我把这行把它去掉啊,你看啊,我把这行去掉,我刚才还有这个验证四掰这个操作。

现在我去掉之后啊,我们看下这里啊,来他直接报错了。

他说呢这个什么is low default,啥情况,就这个东西现在他是不是报错了呢,在62行,第三个,这是62行嘛。

第三个就这个嘛,是不是这个代码报错了,然后你再怎么输它都不会什么提示错误了。

点都点不上去了,什么原因,因为其实就是说这个下面这个代码呢,是由这个JS里面内置的,所以这是我们引用它的原因,这是我们说这个J块的作用,就是他帮我封装了这种啊功能型代码写进去。

我就按照这个相当说封装了一些函数里面去,我们用这些东西呢去实现这个登录请求,然后判断这个账密码是这个情况吗,对不对好,但是这个应用这个JS文件呢,它本身是存在安全问题的,就算你引用了外部的这种JS文件。

它是存在安全问题的。

那么有哪些安全问题呢,我们来看一下啊,那当我们去在做分析的时候,如果你有发现对方已有这种类似的,第三方那种JS文件的话,那么有些扫描其实是能扫到,扫到之后再去验证。

那么我们可以看一下啊,我们可以随便呢拿一下这种类似的这种结块的,这种东西拿出来试一下啊,你比如说像这个1。62的的说这个语法了,哪个呢,引用过1JK1。62点JS文件啊,国家国国内的。

那这里呢我们可以打开这个地址。

我给你看一下啊,他这个网站里面呢,可以根据他的这个浏览器信息,刷新它的加载介绍里面,你看它不是加载了呀,JQU1。62点JS文件,然后你看下信息是吧,这是那个接口来的信息,那就和我们用的差不多嘛。

对不对啊,这里呢很多啊很多啊。

那个很多这种地方都引过,就说这里呢他引用过这个接口,那么如果说这个接口1。62呢,有安全问题的话,那么他引用这个JS的话。

稍有些字不当的话,就会有这个安全问题,那么现在呢我们来做个实验。

首先在这里让我们看一下啊,在JK2020年包裹漏洞就可以,版本引擎漏洞,这个漏洞呢不是像我们后端语言,什么pp那些语言的什么造成什么命令啊,代码执行啊,它不会像那种啊,他一般引用的都都是一些差SS居多。

那引起的呢印象版本是JK大于等于1。0,三小于3。50,那么这个JQU的目前的这个版本有哪一些呢。

版本呢你可以去他的官网地址看啊,OK搜一下啊。

哎错了,那这是他的目前的最新版本是3。6。4,那然后呢这是他的历史版本啊,这在历史版本对吧好,这是他的一个大概介绍啊,那这个漏洞呢是2。0,你记得是3。5到1。03这个版本区间。

那其实影响版本还比较多的啊,但是说从这里的到最下面基本都有影响,这是一个2020年包的一个XSS漏洞,好了,下面呢他有个演示,有个这个演示啊,那这个演示是什么情况啊,我先给大家看一下这个演示代码。

啊这个是他代码,我们来打开看一下。

嗯这是代码啊,啊这是他的一个代码,我们看一下啊,这个代码中呢那应用过一个JS文件,这个介入时间是3。4。1的JS文件。

然后这里呢我放到是用的是网上的公共资源,就是这里我们看到啊,不是说引用本地的啊,这个引用本地应用网址都可以,本地就你自己下载到你的服务器上面,而不远程的就是对方提供的,你看这个3。

41的还是有这个提供的啊,那两个地址都有啊,这个在官网地址我们就用这个嘛,那就可以下载下来。

然后呢放在本地的路径里面去引用也行啊,都可以啊,他引用这个远程那个3。41了,然后呢下面呢是它的一个写法,然后这个是触发一个XSS好。

我们先给大家看一下啊,是一个什么情况,我们先打开给他看一下,那点击这个来触发XSS弹出一出发了出发了,他怎你可能说这是一个什么情况呢,这是个什么情况呢,是这样的啊,呼,是这样的啊,我们来看一下这个文章。

这个有点难理解,很多人没有讲过这个支点,因为第一个是他不是很重要,因为它漏洞不是很高危,但是作为一个研究漏洞的人讲的话。

这个东西呢你需要了解它,需要了解这个整个逻辑他是一个什么情况啊。

来我们来现在看一下啊。

我们来看一下他引用的这个包,就这个页面是引用的是3。41这个包对吧。

然后他的这个情况是什么情况造成的啊。

我们看下代码逻辑啊,好这是它的触发函数,那这是刚才写的POC,我们触发的是哪个按钮啊,触发的是这个叫这个按钮,按钮触发之后呢会触发一个特斯函数事件,test1和初test1呢就上面定义的函数特色一。

就算这个为一,这个为一出,如果这里设置了JW是吧,就是这里为出,它就会触发一个寻找这里面的div,并把它进行一个打印,这个大家还熟不熟悉,就是那个DOM操作嘛,在DOM去取里面的值来操作的。

DMM那个我们原生态JS开发第20课时候是吧,把这里面的进行渲染,渲染渲染这个这个这个变量值,这个变量呢是从这里取POC的,那么你看POCE取PU是一呢,它点的话这全称是一,那就是PP是一取。

这里把这里面的值,就是把这里面的数据替换这个div,这里替换这个DF。

这里意思就是很清楚啊,就是说你点击这个按钮之后呢,它就会触发特斯移和初,他就会触发这个特色移和出,特色移和出呢就这里啊,那么它就会替换这个div里面的值,div呢是在下面,那默认这里为空。

当我们点击这个时候呢,你看这里就变了,这里就变了啊,嗯那边的成一了,那这个代码就出来了,那代码是从哪来的呢,就是从这个地方呢,style style imagine yy这个地方来的。

那你可能会说这不是一个QUON代码吗,那我点这个和触发这个框代码,有什么不同之处呢,有什么不同之处呢,大家可以看一下啊,这个代码我写上去的时候,我刷新这个页面的时候,他有没有弹窗啊。

代码呢这个弹窗代码image src yy on new的,这是JS的一个弹窗代码,为什么我在这里显示它不弹窗,因为很简单,你写到的是这个XMP这里录进去了,这个代码写到这里他是不执行的。

但是我点了这个之后呢,把它放到这个DF这里,那他执行了,但是你又会问了,那这和这个JK这个版本有什么关系呢,好像没关系啊,那无非就是说把这个代码放到这里就能执行呀。

好那么大家既然是这个问题,我们现在换一个JS文件引用,看着啊,我把上面这个JS删完了,给他拿出来,这个是引用3。51的一个JS文件,也是实现同样的功能。

我们看一下它啊,看它呐。

现在我们重新换了一下这个文件。

变成了3。51了,那么依次再去触发,这里点了之后有没有反应呢,没有反应不会弹窗,那点了之后没有不会弹窗,而且我再观察一下,点了这个之后,那个DFA有没有被替换,确保一下代码是功能是完整的,你看DF这里。

那他写进去了,但这里为什么没有弹窗啊。

大家可以关注一下这个下面代码啊,来我把它写出来,他点哪里。

那就会触发这个地方嘛,把它拿出来啊,那这个是3。5。1的一个代码,点了那个之后,下面代码变成这样子了啊,好我们再来看三点司仪的这个版本代码。

好再把这个恢复出来,再不应用这个。

3。4移的啊,按sin s1的重新刷新,你看sin s1的点这里弹窗了,好我们观察一下这个代码,把它复制出来。

这个上面不要大家看一下有什么不同啊,来是不是在自动帮你把它,自动多了一个这个东西啊,并且这里还出现一些呢,后后面冒号都帮你加上去了,啥情况,我本身的这是我本身的,他会把这个下面只把它写到DF。

这是本身的值啊,这是原本的值啊,就是本身我们要这个仅DI的操作啊,嗯就是本身本身第二步的一个操作,就是这个值啊,而这个3。51他是正确的做了这个事情,但3。41怎么变变的东西呢,怎么就结果就不一样了。

你看结果就不一样了呢,这个呢你要可以看一下类似文章,其实就是说呀你在进行多么操作时候,多么操作呢。

在引用的时候,我们前期做多么操作的时候,那个代码大家还有没有印象啊,那做DOM操作的时候,这是我们进行DOM操作的时候啊。

啊这里能用到这种东西呢,去操作多么操作嘛是吧,那么如果说这个值能够可空的话,就会造成XSS,而且这个版本呢符合,就可以造成XS这个条件有点苛刻啊,就是版本符合,并且这个地方的值能够可控。

那如果说我们利用漏洞的话呢,啊利用漏洞的话,原因就是说版本复刻,并且这个这个下面这个值呢,这个地方的值啊可控,就可以造成这个XSS,那大家又会问到一个问题了,那你这个地方可空了之后。

我就不直接版版本符合,我直接让他执行JS语句不是一样的吗,是又有个关系了啊,这里有点绕很绕,我很难的去说讲清楚呃,我们有一个参考文章啊,我们要基于它的逻辑,就是说这个JQU呢。

它里面那它有内置的这个过滤的啊,他是有内置的过滤的,就是不是说你写上去就能执行执行执行的啊,它有类似的过滤的。

我们给看一下文章啊。

那我直接给他看一下,搜一下,给他删去,安排一下文章。

那你看一下这文章啊,来DMMXS的CV1的一些编号小于一叉版本,小于1。2的接口漏洞复现啊,他浮现出来了,好我看一下啊,他说了都用原理,1。61版本的接口代码真则为什么,这个是什么东西啊。

这个是它的内置过滤,就是你如果用到这个接口这个库的时候,你在传参值的时候,它会有一些内置的过滤,就导致一些XS实在无法产生,知道吧,他会有些内置过滤,就每个版本都有些内置过滤。

只是说每个版本在更新这个过滤规则。

所以说不是说你这里这个职能传进去,就能一定能造成XSS的。

因为他自己这个用到这个库里面,他有他自己哭的一个内置过滤,就说如果你用到这个库,并且用到库里面呢,这种接收值之后呢,你传递一些值呢,它会有一些过滤的,除了他本身过滤,我们还要自己写过滤。

这样子呢他才能安全啊,包括这里呢你可以看到下面还有一些其他漏洞,来JK的这个东西的漏洞,CV20181些文件上传,那他这个呢是另外画的啊,这是他另外写的一些功能,这个很少见啊。

主要就是我们一般用这个接口呢,就是用这个引用库之后呢,他的一些情况呃,大家可以看一下这个文章的一个情况啊。

就是说就是因为他用到了这一个。

用到这个3。41这个版本漏洞版本,这个漏洞版本呢包出过CV1的这个漏洞。

然后呢他在做这个增长,页面的一个替换的时候,就是一个DOM的一个替换,就是要改变这个DF的值的时候,然后呢改变的值这里啊是写了一个夸张代码,在这里写了扩展代码,在这里如果使用正确的版本,就不会造成扩展。

使用了这个漏洞版本就会造成夸赞。

这是刚才演示那个情况来再来给大家看一下,现在呢引用的是哪个版本呀,现在我们引用的是,3。41版本,然后呢将这个我们要替换的值,替换到这个下面div这里,点击替换的时候触发替换div。

这里呢就成功的把这个值写到这个div,这个标签里面去了,做DIO就说业务功能的时候触发这个第二幕,触发这来了,然后呢这里触发夸赞,对不对,那是这个版本,那三个都能触发,三个都能触发,没有问题。

那一个个去替换替换这里面的值,这个是替换这个值,这个是替换这个值,这个替换这个值,把这个值呢写到这个div标签里面去。

然后呢触发扩展,对不对,好,这是这个版本,那么一旦呢我们把这里呢换一个应用版本,来实现这个功能,把这个替换掉保存一下。

然后重新再来确定,现在我们检查一下刷新页面。

它的一个版本为3。51了,代码不编,只是换了一下替换文件,我们重新对他进行替换,点了一下,点了一下没反应,点了一下没反应,点了一下没反应,啥反应都没有,并不是说功能没有实现。

因为DFA这里大家可以看到他一直在改变,一直在改变,一直在改变,替换这个了,第三个了,都替换了,都不弹窗,因为他引用到了更安全的这个代码逻辑,所以这里没有出现XSS漏洞,这个比较鸡肋。

这种漏洞呢不是很常见,但是有时候呢是没办法的时候呢。

可以使用一下的,呃,包括这里呢有篇文章大家可以看一下啊。

这文章呢就是说用到扫描工具呢,扫到一些网站应用的JS框架里面有这个漏洞,有了之后呢,啊他就随便在哪个网站上面找了一下,有个网站引用那个1。22的一个版本,然后呢大家看一下啊,在1。

2版本的这个引用这个网站上面,调试框里面输入了一个这个payload,直接这里呢就弹窗了,就说明这里呢他的JS呢没有过滤这种语法,所以你直接用这个JAVASCRIPT语句就能触发这个弹窗,这这篇文章啊。

那同样道理啊,你也是一样的道理,他这个呢是1。2的一个版本,包括上面呢他还教了一些这个,如何确定这个版本是否有漏洞,但这个呢不是我们现在要知道的,这后面我们会讲会详细讲这个漏洞利用啊,就讲这个漏洞利用。

我们现在只要知道的,就是说在开发中。

你应用的这种类似JJK库的时候,这个版本呢如果说不是最新版,用那些老版本就会有一些安全问题,但这安全问题呢说实话啊,利用起来是比较困难的,但是呢他会有这种隐患啊,他会有这种隐患,这只是给大家说一下。

这个代码分析方面的一些知识点啊,他大部分漏洞都是XSS,这个XS漏洞也不是很重要的一些漏洞啊,没办法的时候,那一些报告你们需要这样写,了解一下就可以,这个呢不是很重要的点啊,他不会和一些高危漏洞相关。

好这个就是我们说的这个哭方面的安全问题啊,也就是说在JS中呢除了用到的打包器,有做文章的地方之外,这个库上面的也有用做文章的是吧,然后呢,再就是你本身的一些框架和来生态的一些,开发代码上面的事情了。

好这个就是我们说的这个今天的支点啊,这个打包器和第三方库的一些情况,你像我们上过的这个pp也好,还有这个JS也好,或者说java也好啊,这个在后面web漏洞呢我们会它和它一一对应。

就是我们讲过这些开发呢,就会说这个语言上面的常见漏洞对吧,那么有了我们这个开发上面的基础之外呢,我们就知道了啊,这个漏洞产生的地方,它有哪些厂家安全问题,那商科那就会好伤很多,不然的话你到时候商科的话。

你像这种借款的库的安全问题是吧,是什么情况造成的,是属于哪个东西啊,很多网站都用到这种库啊,只要是涉涉及到这种前端上面的一些样式设计,就会用到这个库,那用了这个库呢就会有这安全问题。

但这个安全问题有很多,但是利用起来非常麻烦啊。

他需要满足一些特定条件,所以也不是说很有用啊。

很鸡肋的一个东西啊,伤他呢就是给他提个醒啊,你懂不懂,其实关系也不大,好今天支点呢就这么多啊,然后下节课呢我们下节课的话可能还有讲啊,嗯可能是上这个JS的这个V1啊,或者是其他的啊。

就最后一讲JS的一些情况,讲完之后呢,JS就没了啊,我们就要讲java了,哎看看有没有课啊,我看一下这个框架上面什么VV啊,那些东西有没有些东西要讲啊,如果说有讲的讲一下,不过要讲的话。

安全问题可可能就讲不了很多了,大部分都是只是讲他的一些,使用啊就是大家熟悉一下这个框架的一个架构,和它一些模型,方便大家以后在做代码分析的时候呢,分析一下,主要有这个作用,那至于说是找不找到漏洞呢。

那就听天由命了啊,他因为他这个本身语言也没什么安全问题,都是些写法,上面还在等什么一些逻辑上面的问题,就是不像上面那有一些这种是吧,写这种UR呀,啊UR的一些逻辑上面判断有问题呢,所造成的安全问题。

写法上面呢怎么写,都没有什么太大安全问题,听天书就对了,不要这个觉得那个啊咳好,我们今天就说这么多了啊,其实我们更多的教的是大家的一个思想和架构,就是把大家那个知识点的思想架构呢,把它讲清楚。

说了这么多,我们为什么把它都归类好是吧,什么什么原生态呀,有什么鬼框架呀,有什么打包器呀,什么插件啊,这个什么模板呐,都是一个分类,因为这个开发技术里面有太多的东西了是吧,有的是什么模板。

有的是有什么框架,有的是什么插件,又有什么这个什么鬼,其他的什么三方库啊,什么鬼东西,对不对,其实就是说每个语言在开发应用的时候,都有各种各样的东西是吧,越高级的语言东西越多,所以他唯一为什么越难。

就像java里面是吧,有框架,有组件,有茶碱妈的一大堆,还有什么哭一大堆,那么每个地方用到的一些东西,如果那个地方有安全漏洞,就是安全问题,所以我们讲的就是这个点,就像pp里面有插件,有框架。

有模板是吧,安全问题,JS里面也有框架是吧,也有这个又有一个什么打包期,嘿嘿嘿,我还有个打包期,还有这个第三方的一些库,对不对,那像java里面也是一样的道理,java更多啊,java里面更多。

其实就是告诉大家这些地方容易出现安全问题,而且这些安全问题呢我们还分类啊,他是属于哪方面的,是本身代码写法的问题,还是说他代码里面的,引用的这种第三方的东西呢出现问题,还是说这个啊。

他引用的一些这种外部的一些辅助类的工具啊,像这种打包器就属于辅助类的是吧,引用这个东西呢,出现安全问题造成的一些事情啊,你要把它搞清楚啊,你只要学到你年老了之后呢,很多安全问题呢都能知道的啊,都好理解。

知道怎么学了,太多了啊,一下子我实在是无法做到,这个把每个点都给讲清楚,我们只能说把那个大概讲完之后呢,从后面的这个在讲漏洞的时候啊,我们再把它归类上去是吧,再把它理一下好。

那个时候呢或许就比较清晰了啊,我这个讲课的内容呢是和网上,你看到的这个一些课程呢是有差距的啊,我每一年我都在改变一些内容的那个讲课,这个顺序和体系,因为我发现有些东西要这么讲,可能会更好理解一些。

能学到更多东西,所以每年都在变动啊,虽然说有些内容没有变,但是讲课的顺序和架构的发生改变,网上有些东西呢,你比如说像这个上这个web上web漏洞的话是吧,他就伤啊,比如说想要我就打个很简单的例子。

你像我说我伤这个SQL注入漏洞的话,我假如我上个SQL注入漏洞,我上完了之后,你会发现这个蛇口注漏洞呢,它有很多问题,就像我伤的好像和你碰到的不一样,什么不一样呢,就是我伤的。

我可能是在pp和MYSQL的环境下面去,再给你去做这个课程演示,诶,你碰到那你不是SQL加MYSQL,不是pp加MYSQL,你可能是这个什么这个点,net加sex server或者其他数据库。

这个事后我假如说我没有讲过对吧,是什么情况,所以我们现在讲web漏洞呢是从语言特性上面讲,就是把它归类好啊,就是说用这种程序开发的,它容易出现哪些漏洞,那么那也是给大家一个提示。

你在前期做好信息收集之后,比如说他是个pp的,它是个java的,那么你的首要目标应该是考虑哪些安全问题,是从哪些地方去找这个漏洞对吧,你把java特性上完之后呢,你就知道诶。

java方面呢容易出现的安全问题是在哪一些方面,你就会有个心中有个底,你就知道怎么找,而不是傻乎乎的是吧,哎他是不是要出现四个组啦,他是不会出现什么问题啊,压根就不会出现,你要考虑在上面不是浪费时间吗。

对不对,讲他的特性,知道吧,这就是我们为什么要上这课的原因啊,我都今天有时间的都给他说了啊,就是通过语言特性的漏洞啊,并且每个漏洞哪些容易产生和,哪些不容易产生的,在这个安全开发的有一些体现在后面上。

到时候呢我们才体现出来,那么你在面对不同这个目标的时候呢,你就知道这个目标呢容易出现哪些安全问题,应该在哪里测,而不是是吧,就会就是扫描工具扫。

你像刚才我们说的这个这个顺丰的这个。

这个这个这个点一样的对吧,如果说我没有讲这个JS,那么你即使这里呢看源代码了,看到这些东西了,你也不知道这是啥,对不对,或者你还一直会认为他这个登录呢,可能是一个这个java或者pp写的这种类似的。

这种登录的地方是吧,你可能还会增,其实呢你殊不知他这个登录的这个逻辑啊,它登录逻辑在哪里啊,他这个登录哪进在哪里呀,登录进来是写到这个VUE里面去了,哎你学过你就知道诶,这是非U1R哦,非一非一。

而且用到这个WPICK,这不就是一嘛,对不对,不然的话你还会一直认为在那里啊。

虽然说我们讲过了之后,那你学完之后你会发现你再下去弄的时候,那还是一无所知,还是一窍不通,但是我实话告诉你啊,你在这种不断的学习过程中,不断的积累过程中,后面只要你一一这个开窍。

或者说你哪一点呢搞得比较深入,一开窍那就完全不一样了啊。

你要相信好,今天就说这么多了啊,看大家有没有问题啊。

有问题就问没有问题,我们就。

跑路了呀。

现在还没有到五一,知道吧,还没有到五一,我们要放这个休息,一夜,要到29号,30号啊,这里面的现在还是25号,这两天还是正常上课的呀,我你妹的30号放假,或说这个休息两天,刚才都有人在妈退钱传票。

你还是说现在呃,现在里面的要是这个休息啦,那天天都要被传。

真是顶不住啊,抽显卡什么鬼。

唉天天就想那些事情,我也是真服了。

天天就想白嫖我妈的,我也成了你们的韭菜。

P32:第32天:JavaEE应用&Servlet路由技术&JDBC&Mybatis数据库&生命周期 - 逆风微笑的代码狗 - BV1Mx4y1q7Ny

这一个安全开发的java部分呐,这个java这个开发部分呢是上的java11啊,啊基础的java s1,那就不上了,这个JA11呢是专门做这个企业级web开发的,一个叫法啊。

那么这个东西呢我们大概要讲的话,要讲个七八次直播呀,一两次呢还讲不了,今天是第一次直播,简单学习一下这个东西啊,然后这里呢我在网上的这些开发的一些文章,里面截到一个屏啊。

这个屏呢是一个java开发的一个,大概的一个发展嗯,HTML呢到AGX呢,那JQUATEMYSQL什么这个j DB c stl pace是吧。

J s p e l j s t l cooking session,Finder my base spin spin m f c,SPININ的boot f f c这东东这啥东西呢。

那其实就是一些这个java开发的,一些这个基数的一些发展方向,那个画上这一个叉叉啊,画上这个横线的,那就是说这个技术呢有点过时,没有花的,那就是说现在还在那用的较多的一些激素,那我们讲的话要讲七八次。

今天讲的呢是关于这个技术方面的,关于hp的,然后呢关于这个java里面如何去调用数据库的,有两种情况,一个是用这个原始的这个JDBC呢去调用,还有一个呢是用这个买贝斯啊这个东西呀。

去调用这个数据库的一个应用啊,呃像后面呢我们还会学学到这个关于他的一些,我们常说的这个库的一些漏洞啊,这些框架漏洞啊,库漏洞,然FISKJS文,那logo死结呀是吧,来像这些对不对。

然后呢还有一些这个内置的什么过滤器啊,监听器啊,啊包括这一个JWP的一些身份认证呐对吧,这些都是我们后续要讲的啊,那今天呢就是讲一部分啊,讲这个,这个app的上面那个抓,然后呢。

还有这个数据库的JDBC和MYBASE这几个东西啊,那my base呢估计讲不到啊,下节课才会讲这个东西啊,哎呀这哎什么鬼啊,哎完了完了啥情况恢复一下啊,怎么撤回,撤回到哪里去了。

嗯那这个呢我们来给大家来先来看一下啊,这个是啥啊,我们先简单了解一下,sweet是吧,好那这个呢是java里面一个什么东西呢,他其实呢我们这里有解释啊,这里呢我也给了一个参考文章,他这个是什么东西啊。

他说是运行在web服务器中啊,你可以当做处理这个ATP协议的一个一一个东西,然后呢他用来验证这个用户的输入,并且呢去呈现这个数据,然后呢是在java1中的一个开发终点,那么简单来说他是干嘛的呢。

就是专门来做这个WB的一些这个传递,然后现在我们就来学习一下这个东西啊,呃他有几个东西要学,第一个呢就是它的使用和创建,第二个呢就是它的生命周期,主要就是使用和创建和新生命周期,然后呢在它的基础上面呢。

去相应的去接受和数据和数据的回写,来我们给大家看一下啊。

我们呢这里呢用这个IDA了去做开发。

那是20023年那个版本,然后在这里呢我们打开这个界面之后啊,这个安装破解,那我们就不说了啊,在我们等下给的网盘地址里呢,有这个安装的一个大概地址啊,大家去参考啊,首先呢是个新建项目啊。

这个项目呢选择哪里呢,呃这个是2023版本啊,有些版本不同的话,这个界面有点不同,但是基本都差不多啊,有的地方的是叫JVA1,有的地方的是叫这个啊,这个新版本呢是叫这个,我们就选这个啊。

下面还有其他的啊,他也支持这个像我们说的JS那种VE这种开发,这么AHKM2我们选这个这个之后呢,这边呢呃有几个地方我们要说一下啊,首先这个模板呢我们就选择web应用程序的模板。

然后呢在这里呢选择这个应用服务器,选择tom cut,这个tom cut如果没有的话,就可以自己呢去新建这个新建的话,那你就自己呢去安装一个这个tom cut啊,tm cut就我们这打包的啊。

我用的是一个9。0的版本,把解压出来呢,选择这个目录啊,把它搞上去,然后这边的语言呢我们就选择java语言啊,构建系统呢选择这个MVER,然后这是他的一个那个报名,这个包名呢包括那个弓箭名啊。

然后这里呢主要地方就是一个是这个模板,web程序,还有一个呢是这个应用程序,这里啊选择tm cut,接下来呢就是在这里可以指向版本啊,呃我这里呢是根据自己需要啊,你可以呢去在本地的去添加。

就说你本地安装之后呢,他这里有个识别啊,你也可以自己呢再去点击下载,就是说如果没有安装的话,你可以在这里呢啊,他这里呢是有这个相应的版本安装的啊,那比如说这个版本的,你比如说想要哪个版本啊。

啊稳定版本呢是个1。8啊,1。8的用的最多,那这里那就可以选择啊,自己如果说没有的话,他可以帮你去下载,我这里有一有啊,有有我就直接勾选到了啊对吧,然后点下一步,下一步之后呢,这个地方呢是什么东西呢。

这个地方呢现在我们目前的用不到,他这里会有一些这个相应的一些这个库啊,包括一些东西啊,你像这个呢hr ba n a T1,这个呢也是一个做数据库的一个那个库啊,我们可以这里来寻它,这里的我们不用选择它。

因为我们用不到啊。

我们这样来用的话,库的话有这个JDBC自带的,还有这个my base,那这里呢像这个呢也是这个做数据库的,由于我们今天不讲这个东西啊,所以也不用勾选啊,直接点创建就可以了啊,他这提示说9。

1呢至少需要java11支持,那我这里那就选择八版本吧,好创建好这个java的一个web开发项目呢,就创建好了啊,创建好之后呢,我们再来呢,就要给大家讲一下这个开发的一个东西了啊。

那首先呢我们来认识一下这几个目录啊,这个IDA这个A目录呢这个是自带的,这是这个模拟啊,这个编辑器的这个ID1的自带的目录,这个呢不是项目目录啊,就是这像这个目录呢,就是你这个打开这个项目的时候。

他的那个保存的那个状态啊,就这个东西啊,这个不用管它不用删啊,然后呢像这几个呢,这个都是它自带的啊,主要呢我们就了解一下SRC里面有两个一个mail,还有个这个test,那这个mail里面有个java。

还有个这个什么,还有这个web app,那么一般的话是这样的,以java的主程序呢是放在这个里面的,然后这里有个叫com export domo,这个是怎么来的,这是在刚才你在创建这个项目的时候啊。

我们不知道还有没有印象啊,你在刚才拆成项目的时候,就不这里选择这个名字吗,就这个东西有的啊,好就打开这里,然后这里呢就有一个java的一个class类的一个文件,打开啊,然后这里呢有它默认帮你自。

动创建的一个文件啊,这个是默认帮你自动创建的,然后呢这个时候呢在这边呢是它的运行服务器,这个是tom cut,这个tm cut呢其实就是我们本地的啊,就这里就是你在配置的时候呢。

不是当时呢在这里呢有选择这个项目的时候,这里有个tom cut吗,这里是你自己之前的创建好的啊,它会默认指向到这里啊,来那么一般网站的程序呢,它就会放在这个web app s,这里呢是运行它啊。

我们可以呢试着呢尝试呢不去修改它,来把它点击运行,运行之后呢,这边呢就会启动这个TM卡人的。

来去加载我们这个项目,那么也会在这边呢会有个文件呢对应产生。

你看现在那就出现了一个项目,项目名字叫DOMR杠WER,这个A股的一个地址对吧,然后这里呢有个这个地址一连接,这里输入hello world好,这里还有一个叫hello sct。

点击下那访问hello strict,然后呢输出又输出hello world,这个代码是在哪里呢。

可以看一下啊,在这个hello所有的java文件中呢,这里有个路径啊,想我们这个地址呢触发它好,现在呢这是他默认自带的啊,我们下面呢就是这个java的一个,TM卡的任性日志啊,这个下面我们先把暂停掉。

我们接下来呢就来学着去写一下啊,我们就不用这个文件了啊,我就自己呢在这里呢重新创建一个啊,创建一个java类文件,然后名字我就取名叫index,然后呢取名叫这个skate,点啊,取名之类的文件。

那这个文件取名之后。

我们来先来学习一下这个script的一个使用啊。

然后如何使用它,如何来去使用它啊,首先他在这里呢。

第一步需要做的是什么呢。

创建一个类来继承这个it appetrick,但这个东西呢是从哪里来的啊,来继承一下,啊这个东西从哪里来的呢,来继承它,那继承它之后。

它里面呢是有几个内置方法的,像IINIT方法,SEERVF法,DESCRIPT方法,DE勾的方法,DEPOST方法专门上呢有一张图片,我们来说一下啊。

我们来先讲最简单的一个do get方法来写上来,直接在这里来输入点,Do get,哎这个是干嘛用的呢,这个是干嘛用的呢,就是有检测到访问,用get模式去访问的话,就会执行这里面的东西。

然后呢我们这里呢可以看一下啊,我们这里那就把这个先注释掉,输出一个东西来确定一下是不是这个道理啊,输出一个东西来确定一下是不是这个道理,那输出一个,do get好,我们在这里呢就写上这个东西。

那么这里写上之后,如何去触发这个地方呢,它这里呢就会在WOBBALL这个里面加web xm,里面去配置这个STRU啊,STRU个英文单词老读不到啊,就这个刷题,这个这个这个地方的一个路由无关系啊。

怎么办呢,在这里配置啊,如何配置,我给大家说一下,大家看着啊,那首先第一个啊,这是它的配置,然后有个名字,还有一个呢就是它的,class d方,好这里名字随便可以取个名字,我们就叫INDUST。

就叫index,然后呢触发的class文件指向指向哪里啊,就指向这个地方呢,把这个地方复制,右键复制,选中,复制它的引用,它的完整路径就是这个包下面的index是吧,这个地方呢复制它。

然后呢再到下面去写一个STRUST,叫路由,这个是路由啊,好在路由里面呢又会两个东西,一个是雷姆,还有个是什么,x your喷录音,好那这个是又是啥啊,我们来一一对应给大家看一下啊。

等一会给他对应看一下啊,这个呢就是你要加载的这个名字叫index,然后呢引用的class文件路径是在这个下面,这边呢就是对应的哪个名字对应的访问URL路径,比如说我这里呢就选取为index。

就告诉他是这个的触发者里面的这个地方,然后呢访问路由我们就选上index,如果当你去请求斜杠index的时候,就会触发着你的东西好,那么这样子呢写完之后啊,我们来保存一下,这里呢哎哪里有错误啊。

好没有错误了啊,刚才包了个红,是那个多了一个那个斜杠的问题,好在这写好之后啊,我们来重新运行啊,重新运行,我们先来看一下啊,你也是个tomcat,除以运行这个TOMCR8重新启动,在启动的时候呢。

我们有必要先讲一下这个地方啊,那他这个配置是这样配置的,这是你的这个URL路径,然后这是你指向的方法,有个部署部署,这里呢还可以在这里再添加呢,还然后呢这个地方是他的一个访问路由地址。

那叫DMOWER啊,这个呢是叫这个名字,我们就换名,都叫多么多么二好吧,这叫多么二,把全部修改,点击确定,确定,先把这个删掉好吧,我先删掉给大家先看一下啊,呃然后这边呢是他的访问的这个路径地址啊。

来点击下修复修复,那就随便选出一个了,修复点确定这个是访问路由地址啊,这他那个项目的访问地址确定确定啊,这个地方就是说如果说这里没有的话,你点一下刚才那个修复,它就会自动有啊,来修复一下好。

这边呢我们重新再把启动一下啊,重新再启动一下,启动完之后我们试着去看一下啊,这个一个情况的一个产生啊,启动了大家看一下啊,那默认访问这个DOMOWAR,那么就是刚才这个路由地址。

那这个地方的设置值地址对吧,那设置地址就这里嘛,就他请求路径这个项目的路径。

然后呢你同时呢你也可以看一下啊,在我们的这个阿普利呃。

阿帕奇的目录下面呢,你看啊是不是就有一个叫DOMORWAR,这个地方是刚才创建的,这就是那个项目啊,它会自动的帮你去配置好之后的。

部署到这个阿帕奇这个下面去,知道吧,好启动好之后呢,我们看一下访问这个路径,默认它访问的是这个叫hello world以及是吧,然后呢你可以看一下,我这边呢又重新创建一个文件叫index。

然后这里会输出一个叫do get,但这里没有输出,如何访问到它呢,这个名字叫index,我刚才呢在这里声明了啊,请求这个index的时候呢,触发这个名字为INDUSTOR。

然后呢调用的是这个comment下面的index,所以呢你看啊,那就是现在执行到这来了,这个时候呢我们看一下路径,后面加上index之后,执行好为空,但是这里你可以看到呢,是不是输出了就get呀。

当我们去刷新再访问,那又是do get来看到没看到没,那这是一个什么情况呢,其实呢这个就是专门做do get的,就get的啊,就是说你这里呢去请求这个地址呢,会触发这个do get方法。

就默认请求这个地址呢就会触发这个方法,然后呢如果你让数据要回显的话,要接收的话又可以怎么做啊,来我给你看一下啊,比如说现在我再来改一下,我先把暂停,我让这个接收数据,比如说我这里呢就可以怎么样。

声明一个这个string啊,名字就叫这个名字,雷姆等于什么呢,这里不是上面写了个do get呢,引用这个结束方法吗,request来request点接收参数名为name。

然后呢再把这个雷姆呢给它显示到页面中,显示页面,这个呢是显示在调试器里面就可以写到这里的,然后显示到页面中,就用这个RESPON来去显示,response显示是怎么显示的呢,啊他是用的一个流去显示。

这里呢我们要简单说一下啊,这个简单过一下就可以,就这里呢可以啊,去用这个东西来去接收它的一个显示输出数据。

用这个值啊来声明一个这个东西啊,名字叫OUT等于RESPON,点get right来结束这个显示数据,然后把显示数据呢进行显示,就是OUT点print打印,比如说我们可以自己呢去打印它啊。

就显示这个呃name等于变量name,就在页面中去显示这个内容啊,就是那我也接收你输入这个类目值,同时呢接收完之后啊,我还尝试呢去把它进行打印在页面中,然后呢。

并且在我们这个调试这里呢去输出这个to get,表示说是吧,结束到这个就get,对不对,嗯好那现在哎那么现在呢我们现在来了啊,我们把先重新再启动一下,好他这里又包了个这个错误案,来来报了个错误。

刚才有人也说到了啊啊说这个导包,其实这个在java和那个啧这个Python啊,或者说其他语言里面,它都有这种东西,就是像我们之前讲那个呃JS的时候也是一样,就是有些函数啊或者一些东西呢。

他需要导包之后呢,他才能用,你看这个标红的呢,就是这个意思啊,呃有时候呢你自己没有写的时候,他也会自动帮你把一些东西写上去,但是有时候呢你需要手动搞,你知道吧,你需要手动搞啊,我们先把这个来注释掉。

我们先看一下这边能不能接受啊,我们先看看能不能接受,把运气来,还有一些像这个id上面装的插件,我都没有。

都没有去给大家介绍,就是我在上面还装了一些插件。

这个插件呢因为怎么说呢,这有些东西太基础了啊,我这个没办法去说给他去那个晕染啊,你看这个有些那种网上上,你都可以看到这个一些推荐的,一些地方的一些场景啊,那像这边呢像这个呢只安装几个这个网上的。

可以看一下这个我安装几个啊,网上是有这种推荐这个编辑的,这个这个裁剪的一些东西啊,我都没有去说给大家去写的啊,好我们先看一下这边能解能不能接受啊,你看啊,那index是吧,index呢输入这个了。

id等于一,那它没有问题啊,输入了是可以,但这里呢我没有显示,我把这个先在这里再调试一下啊,我就先不输出到页面中来把它调试一下,你看输出这个,看一下啊,能不能接收到这个类目啊。

来重新访问一下刚才那个地址啊,index是吧,Index,然后呢name等于一执行,你看是不是接受了这个雷姆一啦,当你这里改之后,那两个改小迪是不是小迪了呀,对不对,然后这个呢是在这里啊。

刚才我说这个呢是在那个,是在那个什么页面回旋中,就说这个呢是在这里显示啊,然后我们刚才说的页面回旋呢是用的,他这个类似的方法叫RESPON,这里名字是可以改的啊,比如说我这里呢把它改成这个REQ。

那么同样道理,把这里改成RESP,那么这里呢就变成了IQ了就可以了啊,这个可以改的啊,然后这里是do get,你看他下面的还有几种啊,比如说do post来哎,那它还有这个do post。

那这个do post我就不说,大家应该知道这个DEPOST是干嘛的,来这个DEPOST是干嘛的,就是结束post数据的,能不能理解,还有就是什么,你看就heart就delete就open鞋to put。

那还有这几个,那这几个就不用多说了,就是请求的方法,new post就是接收post数据,我们呢可以自己呢来尝试一下啊,来我们可以把这个代码呢,复制到这里来试一下啊,也是一样的道理哈。

我写上去呢结束这个值,然后呢是输出这个new post对吧,把写上去之后重新运行啊,好我们把它运行起来啊,那么你看现在啊,我们去访问一下这个地址嗯,你可以看一下这个due post,然后呢一样道理啊。

请求DELIST,他这里输出就get,然后为空,这里为空嘛,因为这个name没传参值,这个就post没有执行,这里呢也没有输出,然后我们怎么办呢,比如说我们在用到那种插件工具。

用post去请求这个路径的时候啊,试一下是吧,找那个黑客八呀,或者那种post man啊,那种工具。

那去罚一下,罚一下那个post包去尝试一下是吧,那这里呢我们就请求雷姆呢等于一呀。

执行访问,你看这里是不是结束了,来do post呀,你看对不对,来换一下数据,是吧,然后呢这个是丢post,像我们还说的这个下面还有它内置的呢,丢hand duly or delete。

这东西呢我们就不说了啊,就是关乎到你在请求的时候,这个什么提交的方法,这个呢我们在前期呢有给他讲过,就是这个方法是吧。

好这个就不说了啊,然后这一种呢是一种路由的设置模式,除了这个之外呢,它还有个内置模式,我们来给大家讲一下啊,接下来我们用一种另外在这里呢创建一个文件,我们再创建一个文件啊,用一种内置模式来看一下。

同时呢再换一个叫new,前面大写啊,后面小写,有些命名呢是有讲究的啊,不能乱写命名,我们加个new的啊,呃在new这里呢,我一样道理啊,先继承这个ADD的这个东西啊,我刚才为什么那个地方有问题。

是这样的啊,刚才这个继承的时候呢,他这个有点小问题,对刚才继承了要写这个啊,那刚才我是写了这个,对不对,hello这个地方的东西,所以导致输出两次啊,刚才问题啊。

应该选择这个呢java sweet a app里面的继承这里啊,他这个呢选这个就是继承这个in is uh,uh expin dom r里面的hello这个地方,所以这个然后你看下面还有几个啊。

这几个呢都是有讲究的,你不能说乱写的啊,好写上去之后呢,你看啊这个呢也是一样啊,我先搞个do get啊,好然后呢,在这里让我们输出一下,好随便就输出一个这个名字,那就叫这个溜呃,就叫这个名字。

new下面的do get把输出这个东西啊,便于区分好,那这写好之后,我们是不是按照刚才的道理来讲,是不是在这里呢又要重新这样子去操作它呀,是要重新写一个啊,然后这里指向这个地方就是什么。

这个指向地方就是要换成这个路径呀,是不如果按照刚才那个写法,是不是要这样去写啊,然后名字换一下名字就要溜,然后下面呢就叫new请求路径呢,你自己想怎么改就怎么改是吧,改new也可以,后面加星号啊。

星号就代表任意知道吧,比如说我这加个星号,我代表任一,对不对,就后面的new后面任一啊,就这个意思哈,把写好对不对,然后呢我们运行啊,所以这是我们之前讲的啊,我们先把它测试一下啊。

然后呢你看啊我们访问new。

你看后面要加,随便加个了,哎没反应,这啥情况。

大家看看。

请求这个东西不存在,好我先不说它还原啊。

我都忘记那个通配符是怎么写的。

来溜好,你看这里输出来是不是输出了,那么现在你看啊,这是一种写法,我先把它注释掉,注释掉之后呢,好我们再来启动啊,就这个没有了啊,没有之后呢。

你再访问肯定就没了啊。

好现在让我们看这个访问呢,访问404这边呢也不输出了是吧,因为你这个东西呢没有了,还有一种方式呢,就是在这里呢最简单的在这里加个东西,路由这里加at water check,然后呢里面写路径杠U。

呃你这种写呢它也是可以的啊。

你这里呢我们可以给他看一下啊,来。

他这边呢是有讲到的啊,这个是那个呃一个那个索命嘛是吧,这个有些我们没有给他讲的,就是关于这个什么目录的呀,然后这个呃这个东西的一个作用啊,包括他怎么去声明呀,那这个上面都有写。

只是我们讲呢就没必要讲的很细很细了啊,这个真的是那这个地方的一些说明是吧,刚才我配置那些东西呢,包括这个请求路径上面还有各种写法,另外呢,还有我们这里还没有写那个哪种方式的,一个访问啊。

然后像下面这个返回的一个内容啊,包括这个显示啊,他都没有去写,都没有写啊,我给大家看一下这个项目的,你看这个呢就是我们哎不不不,这个,这个是哎我那个写的跑哪里去了,好在这里。

你看那这个就是我们之前给大家写的啊,对不对啊,然后呢这个是我之前写的,你在这里加这个东西呢也是OK的啊,也是OK的呃,丢get这是我们自行写好的,然后呢按照我们刚才一个逻辑来,这里是回写那个数据的。

这里还有个60啊,这个60呢是我们做那个数据库库连接的啊,这个没有没有讲那INDE,这是我们之前写好的一个代码的一个情况,然后在我们刚才回到我们刚才这个写的项目,这来啊,就说你除了在这个地方设置它。

一个访问路由之外,还可以呢在这里再加上这个东西也能设置,它也能设置的啊,他是也能设置的,两者呢是有这个相应的区别的啊,但是他们实现的道理呢是一样的,所以说你也没必要了去计较啊,用哪个方式实现。

就说你在做代码分析的时候啊,你一定要知道啊,这些路由地址在哪里看都比较重要的啊,不是说这个自己的随便写呀,是不是不这样的啊,然后除了这个之外呢,还有几个东西我们要给他说清楚啊,就像这里啊。

除了这个do post do get,还有几个啊,来我们把都写一下,一个INIT哎,还有一个啊都写上去i it的和server方法,设法方法有两个啊,我们来看一下啊,他一个那是一个是这个还有个啊。

我们把它写一下,还有个这个下面的server的有两个的啊,你看一下啊,两个继承不一样,这个是来源于这个地方的,这个是来自于HP的,我们来看一下这个东西是从哪来的,APQUS到哪来的啊。

它其实就是你在创建的时候呢,这个库里面自动加载的,那就在这里呢,你看他路径JWT,然后呢下面ADP是吧,然后呢你看啊你刚才这个app的,它来源这个app的这个地方是用它来封装的。

就是说有一个单独的JAR呢去处理的,他的那个解析的基层呢就是来源于这个库,这里啊就来源这个库这里,然后其中像我们这里呢,其中我们这个地方的这个来源。

那就来源这里看他那个方式说明呢,我们来给看一下这张图片啊,拾梨花是这个IINIT初始化,INIT实例化,然后还有服务方法和消化方法,这是个什么逻辑啊。

这是什么逻辑好,现在呢我们把它写清楚啊,给大家看一下这个逻辑啊,要看它的执行顺序,其实就是一个对象里面,我们经常说的里面呢就有类似的方法,它会有一个初始化,调用和销毁等等一些东西。

就会你在程序运行的时候,这个程序进入之前,它就会执行一个东西啊,就这个it啊,我们可以把相应的打印下来,把它调试一下啊,给大家看一下,就我们来看一下顺序啊,要了解一下,因为这里呢有知道它的执行逻辑的。

那个生命周期之后呢,我们后期再做这个演示的时候呢,就知道他是一个什么情况了哈,把打一下,还有一个就是我们说的销毁啊,销毁写在最后面的,哎,加火写到最后面,输出一个销毁好。

我们现在呢把这个地方先把它注释一下啊,我们这里呢就把它运行起来,我们看一下啊,他这个输出的一个结果是一个什么逻辑啊,好先运行啊,好运行起来之后,我们再给它自动访问了一个路径,对不对,好。

我们来去请求这个路径啊,他这个index呢是从这个index去出发的,对不对,好,我们看一下啊,访问index出发之后,我们看这里输出,首先他输出了INIT,然后输出了这个诶,这个两个没改吗。

这他妈的真是尴尬了,这个是i i it,第一个是i i it啊,I i it,然后这个名字没改诶,它还是显示呢这个一个是这个sera late server,然后呢这里也是server late。

然后这个app是没有执行的啊,两个服务是没有执行的,一个是继承这个app的,一个是这个server,就是这里我们说的两个啊,就这里呢一个是这个的,一个是这个的啊,记住这个的,还有一个呢是这里的这个地方。

然后这两个有什么作用呢,这两个什么作用呢,这个server就这个SERA啊,他继承啊,这个SERA他继承的是,request请求的,而这个是app的,啥意思呢,就是说我访问这个路径之后啊。

他触发了这个上面这个地方,但是关于这个app上面的request呢,它没有触发,为什么这个其实就是很简单的道理,这个呢我们把理解为他是干嘛的,接收参数触发的地方,当我们这里呢输入参数之后。

name目你看啊,输等于一的时候啊,我们回车,你看诶啥情况,那我要写错了呀,这和我们那个逻辑不太一样啊,我哪写错了吧,Do u get a,兴许,等一下啊。

我用这个项目跑,我不知道哪里应该是哪里继承,写错了。

先不解决它,我们先看这个结果啊,是多么这个好用,这个来刨一下啊,这个是i i it看一下啊,改这边的这个呢也是和刚才那个一样啊,来,这个index啊请求这个路径的index方法呢。

请求这个index路径,那触发这个地方啊,这个是一样的,然后呢是来到正面的语法,我们先把这几个关掉来看一下啊,然后呢你看啊这里有个do get方法,来这个do post方法,in init方法。

先把这个注释掉,然后呢像这个销毁方法,还有这个server方法,那两个啊,来一个app的,一个是这个server net的,好啊,把跑一下啊,反正面的。

我们看下那个执行逻辑啊,跑不跑起来。

哎呀这个地方有那个暂停呀,先把这个暂停掉啊,那两个占用了啊,占用那个TM卡的造成的,刚才没启动成功,好启动了,我们看一下啊,来请求这个index,你看他的显示啊,来执行INIT。

执行server server,执行HTP,有什么这个app啊,这个东西啊,这个不用管它,你看啊,呃我们把参数写上去,它接收的参数是哪一个,看看源码啊,接收参数了,是这个id,我们输入这个id啊。

id等于你看这里就显示id1,那这就是刚才我说的那个仙法嘛呢,用这个解锁id值之后呢,用这个东西呢来请求这个路径把它输出呢,id是吧,刚才写的那个输出嘛,然后页面写的输出,然后你看这个结果啊。

结果里面呢就是呢他第一次进入的时候,会执行一个i it,下面呢就一次执行SERASERA和TP server,对不对,然后你发送参数之后呢,也是这个执行流程,我们会把清空重新来一次啊。

当我们去刷一单访问执行,看他执行哪些东西呢,然后呢这个INIT初始化方法它只调用一次,就很简单。

你看我们现在啊去访问这个路径之后,他这边的输出啊,你看他就没有那个i i it的输出了。

他只执行一次,然后这个销毁呢是指被调用次。

就是服务器被关闭的时候,他会执行,就这里那不是还有个销毁方法吗,但是他一直没有输出,看一下啊,我们把这个东西给他暂停之后。

结束之后,你看他就出发了,所以这两个呢比较有特点啊,这个是服务器销毁之后出发的地方,而这个呢是你进入之后,它触发地方,这两个呢都调用一次就完了,然后这个里面呢就会多次调用,就是只要你数据传递。

它就会调用,其实他这个东西呢,就是用来去判断你是请求什么方法。

有没有数据就会一直调用它,包括我们这个do get和do post呢全部是在它之下,包括我们现在啊再给大家演示一下啊,就是先有这个sell方法之后呢,才会有这个do get或者是do post。

因为用它呢去来判断的啊,来运行,你看啊,第一次运行的时候,看它会执行什么啊,好运行起来,你看啊,默认执行。

当我们去访问这个路径的时候啊,看一下这边的一个显示哈。

index好看一下啊,回车执行init server server的app的,然后一个do get,对不对,好,我们来看一下id选项区域,哎呀这个逻辑刚才到这里啦,结束啦。

然后又是do get do so啊对吧,这个逻辑关系,所以说这里呢有几个类似的这个方法啊。

IINIT的和这个销毁的两个呢是只执行一次,一个呢是进入之前执行,一个呢是服务器终止之后结束,这个server里面呢有两个,一个是这个app的,一个是server的。

是先执行server的这个select的,然后呢再执行AHP的,一个呢是负责接收方式的一个处理,一个呢是接收数据的一个处理,简单来说就是这两种情况啊,你在有时候呢在分析代码的时候呢。

这个逻辑是要搞清楚的,不然的话你是不知道是哪个先哪个后,为什么要这样讲,是有原因的啊,好这个数据这个东西呢我们就说到这里啊,然后这个是那个写数据,这个呢就相对简单对吧,首先呢设置它的这个显示数据的编码。

那就像这里啊,这个是do post去输入这个数据,我们呢也给他输出这个结果,比如说我们在输出的时候呢,也可以继续的写上去是吧,比如说呢直接告诉他这是get请求的数据,对不对,给他写上去好。

然后呢如果说是post的话,我们也可以写上去,这把post来接收数据,那么如何操作呢,也是一样的道理,REQ点get a prom接收数据,接收post数据,比如说我们就接受name是吧。

就name值声明一个这个东西呢来去接收它,等于这个解释过来雷姆值,然后呢再将这个类目呢进行一个显示,那么就是和刚才一样啊,先用这个呃解释过来之后呢,用这个东西呢,把它这个编码和解析语言这两个设置啊。

因为有时候呢你在输入时候,有考虑到一个编码值和解析语言的B点的话,会不识别啊,会有些乱码,把两个写上去,就这个名词嘛哈,然后呢再来写这个输出的结果是吧,就是我刚才说的那个答案嘛,写上去。

再把这个alter呢进行一个输出是吧,再告诉这个啊,这是post提交的数据,然后呢依此啊来输出这个数据值嗯,对不对,输出这个数据值,然后呢再把它进行一个刷新,那最后呢再关闭,好这个是我们的那个post。

当你呢去请求的时候,我们来看一下现在是不是这个情况了,这个是页面的回血啊,下面是页面的回血,就是呢用来接收请求数据和页面的回信。

好我们来去请求这个路径,Indust,对不对,index之后呢,来这里是输入id呐,你看这里就报错了,你看是不是报错了,来这个其实就是我们的页面源码导致的,你看我设UTF,它它在这里不解析了。

这包了一些乱七八糟的东西,你看我访问来,其实这就是说这是get请求数据,只要咱是显示不行,他可能是要你把他变成这个gt啊,Gbk,因为我可能是这个项目在创建的时候是JBK,所以他这个显示呢也要那个啊。

那你换成这个嘶编码,这个呢你是给代码中去生命啊,这个倒不是很重要啊,要结下就可以了,编码的问题啊。

不管他哎,你可以在这个上面呢去把它编码一下啊,所以换成GBK啊。

然后呢这是post,然后呢我们改post啊,你看下面让我改成post name数一三。

那他就是post数据,然后呢输出123,对不对,这里呢就是在这里呢,去把他是数据的一个那个值改一下啊,编码的问题,这个也是post,对不对,好刚才那是在这一边呢去声明他的请求路径。

那么接下来呢我们是把这里给它注释掉,按照我刚才的逻辑,是在这里写上一个这个we get呀,去写这个路径啊,然后呢去请求这个路径,把它改成A对不对,改成A来重新来访问一下。

这也是一种设置的流逻逻辑路路由地址啊,刚才是在这里设置它的那个逻辑出发是吧,名字包括它的触发的这个class对象的地址,包括这个请求路径,刚才是在这里设置。

我把注释掉了,注掉之后呢,我在这里到前面是不是这个东西,杠A呢再去触发,那么现在我们看下请求index呢就会报错,当我请求A的时候呢,就正确了,你看是吧,然后呢到我复制给i id等于一。

那么就结束到ID等于一了是吧啊,同样道理,那这里呢再去请求类目的话,那么也是一样道理,对不对,请求name目如果不给值呢,就是为空是吧,不给字就是为空id的为空,对不对。

所以说啊这个呢相信大家就知道了啊,两种方式,一种呢是在x stress呢,还有种呢就是在这个前面直接写两种都可以啊,两种实现的原理的都差不多,你用哪种写法呢都行,对不对,哪种写法的都可以啊。

啊这是我们说的这个地方啊,主要支点呢就是了解他的一个创建啊。

了解它的一个创建啊,了解它一个创建,同时呢在这里呢去修改配置也可以呢,在这里呢去直接写上这个配置是吧。

也可以直接在人家写成这个配置都可以啊。

也可以在这里直接写上,然后呢生命周期就是我们刚才说的这几个雷,值的是吧,INIT初始化进入之前啊,进入的时候呢就会调用默认就会调用它,然后呢,这个地方是你服务器终止呢调用的这两个地方。

只调用一次里面的这个server方法和do get,do post就是相应的事件,你访问get那就会触发do get啊,当然这个sell方法呢它也会被触发。

大家也可以看到,在我们刚才做实验的时候,他也输出了这个什么奢望里面的东西,就像这两个呢也输出这两个地方,是不是,就是你就是说你在这个程序里面调用的时候,有些类似方法它是默认会调用的。

他就和我们来讲讲那个什么pp,java的反序列化一样,里面有些内置的魔术方法,你触发到的时候,它就会自动调用,而这个do get和do post呢,它不是自动调用的,它是你访问get方法的时候。

初调用post呢是传分post。

提交数据包的请求方法的调用,而刚才讲的这三个INIT和server,还有这个DEST这几个呢是自动调用的。

就是你只要访问那个地方的话啊,触发那个地方它就会自动调用,刚才那已经做过实验了,那这个下面还有输出的结果,你看它也会自动调用,I do post,do get呢是在请求到这个方法的时候才会调用。

这就是我们说的这个它的一个使用啊,那么把这个使用之后呢,我们接下来就来看一下,如何和我们的实际应用相关,就来讲一下这个java里面,如何去和数据库呢进行联通,并且呢将数据取出来。

默认呢网上呢是有三种方式,一种呢就是我们说的用他的原生态的JDBC,然后呢用到第三方的库my BIOS,还有一个就是我刚才说的在创建项目的时候。

还有个那个名字啊,就这个呐这个HIBABERNTNATE。

这几个啊,这三个都是用来取java里面用来和数据库通讯的,那有这三个JDBC。

这几个啊。

H i b e r n a t e,那它都是这个java中的这个数据库的这三个东西,然后他们有什么区别呢,我给他说一下啊,这个网上呢也说了一些区别,他说了JDBC使用性能高,编写效率为低啊。

这个呢适用性能为低,但是它的这个编写效率为高,而这个呢是中两个都是中啊,其实就是说呢你看你考虑哪一方面啊,但是实话实说,目前在网上市面用的较多的是这个my BIOS,其次是HIJDBC用的最少。

原因就是因为初级程序员用JDBC,后面呢大部分都用这个买呗,这个东西,那我为什么要把这三个东西呢,去给大家讲解清楚呢,为什么要把它提出来呢,是这样的啊,我们在那可以看篇文章。

这个文章呢是写了一个叫MBETH注入。

啥意思呢,就是说呀,你如果用JDBC去开发数据库应用的话。

那么和这个买BIOS去开发应用,包括刚才的这个hi这个了啊,OK再搜一下呗,那他说这个框架中的hi查询注入意意思是啥,意思呢,就是说你用哪种方式去实现这个SQL注入啊,实现这个数据库操作。

就会就会有哪一些不一样的安全问题啊,就会有哪些安全不一样的问题,如果说你用它来实现,那么它里面有安全隐患,就有安全隐患,如果他没有安全隐患,就没有安全隐患,同样道理啊,这两个都是一样的。

那后面我们用的最多的肯定就是这个啊,那用的最多的呃,JDBC呢是原生态的,就是java官方提供的一个数据库接口API,然后这两个呢是属于第三方库,这两个是属于第三方库啊。

需要单独去把它加载进去才能使用的,知道吧,这个呢是我们下节课要给他讲的啊,讲一下这个my BIOS,因为呢我们第一个呢要交原生态的这个JDBC,还要教一下这个第三方的,这个呢我们就不讲了啊。

嗯好,那么现在呢我们来说一下这个数据库的操作啊,这个数据库操作,那么如何去使用数据库呢,啊我们来到刚才这个项目这里啊,呃我们在这里呢重新创建一个名字,就叫,My select,好吧,My ect。

穿上它,然后呢他怎么做啊,声明一个面函数。

然后他怎么做呢,首先数据库的操作是分几步的啊,它是分几步的,第一个呢我们这里使用的是JDBC原生开发啊,这里呢可以参考这个文章啊,它是分几部的,我们来把每一步来讲清楚啊,第一步,他说JDBC啊。

JDBC是系统java里面语言自带的API,所以他不需要额外东西,但是呢他需要一个叫数据库驱动的东西,这个数据库驱动是啥东西啊,他的第一步先来看一下啊,去下载JDR,这个是什么东西呢。

就是下载数据库驱动,那么在哪里下载呢。

在这个网站上面写上M非N,其实就是我们后面要讲的,像这里呢经常会拉取一些项目的时候。

那就会用这个了,MV啊,他就其实就是在这里下载,然后在这里搜索啊,那你要操作MYSQL,那么他就要去下载一个MYSQL的这么一个操作jr。

那么包括我们现在去引用去使用它,后面大家就知道了啊。

如果说我要引用,像刚才我给大家讲到的这个什么,这个笑洛克斯基fast jackson啊,Fafak fast fast jason,那像这种呢也是一样的道理,也是要在上面去下下好之后呢去引用,知道吧。

然后他每个都有不同作用,你像这个呢身份验证的这个是日日相关的啊,这个是数据的那个转换的,对不对,当你用到这些功能的时候呢,你会下载这个东西呢去帮助你去开展代码,然后呢这个东西呢有漏洞,所以造成这个漏洞。

同样道理啊,我们也是一样,这个意思啊,输入MYSQL,然后呢选择这个,然后这里有很多版本啊,这个版本的你看它上面还写了什么叫EVERS,啥意思啊,出现过漏洞,就说你用这个版本呢就会受到一些漏洞的侵害。

比如说这个5。1。41就是五,关于这个MYSQL5版本使用最多的啊,我们把它选中,他说报了什么CV12022,Cv1209,Cv208,其实就是说这个解压包里面是有漏洞的,你在使用不当会有一些安全问题。

类似肯定就是一些SQL注入,你可以翻一下嘛,来搜一下的编号,那MYSQL输入验证错误漏洞,就是你在这个java里面开发这个东西的时候呢,把这个漏洞补丁没有漏出来啊,没有搞出来,但是这个包裹这个漏洞好。

我们先下载一个啊,那这个下载呢我就不说了,就直接点下载就完事了呗,啊直接点这个了,那这样吧,点一下就瞎了啊。

好我们把它引入一下啊,然后在这里呢好我们就创建一个目录啊,叫level就专门来存放这个目录的一个目录叫level,然后把这个目录呢啊给他放进去。

就下载了个JL文件的,把它放进去,那这个是JI文件,把放进去。

放进去之后呢还不行,还要去引用它,如何引用呢,把选中,点击右键添加为库,其实就是说把它添加到项目里面的意思,就项目里面你直接放进去了,但这个代码呢没有被激活,就说你这个想代码呢没有在这项目中去激活。

点击添加维固把它激活掉,好来先这么去先添加到这个模块里面去,就让这个项目模块里面呢有它了。

好有它之后呢,接下来我们才能正常使用了啊,那么接下来就是看这个流程啊,这个MYSQL的一个操作流程,那么包括其他的库应用也是这么个道理啊。

啊首先呢他说第一步是先注册数据驱动,注册数据驱动,那么我们这里呢就直接写了啊,来。

来到这个盗贼,这哪里啊,哪三个,这个是这个来来这里啊,然后这里呢怎么办呢,第一步来class啊,去调用这个什么,调用这个地方,然后呢看一下啊路径com点它的整个路径名呢,com点MYSQL。

MYSQL点点他的一个注册数据中JDBC的点driver好,就对应写啊,这个呢是固定的啊。

这没什么讲的,就是在数据库驱动先注册一个,注册完之后,第二步建立数据库连接,建立数据库连接该怎么建立格式呢,有URL格式啊,呃MYSQL连接就用这个oracle连接,有这一个sl server。

就用这个,那我们可以自己呢来给他看一下,然后呢我们就声明一个变量啊。

声明一个变量,然后这里有个报错啊,这个包戳呢就可以让他尝试一个异常解决,就点击这个呢添加为异常啊,它自动解决了,那就不报错了,三零就是他和那个Python语法有点类似啊,就是那如果有些东西呢。

他可能觉得在执行的时候都会有一些异常,那么你就把它异常写到上面去啊,就不会属于这个程序在出现异常之后,停止执行的意思呃,然后呢我们去定义一个SQL语句啊,这么一个这个stray的一个类型。

circle等于呢就是加上这个它的格式嘛。

格式呢怎么写啊,再看一下就是JDBC啊,原生态的JDBCIP地址呢就是我们的本地是吧,LOCALHOST或者lo170,这是你的连接的IP连接端口,SID呢就是数据库名字叫DMO0,一。

就是我们经常使用的啊,我们来连接一下,这里啊我们可以看一下pp study呢。

我是开了啊,这个PV的MYSQL的都是开的,没问题啊,所以我们连接一下本机。

确定估来连接这个MYSQL,然后呢这个DMM01,那么对应上写上去是不是接下来啊,你看它就会创建连接,这个呢就直接模拟过来就可以了,然后呢这里简单修改一下几个离箱啊,修改哪个地方呢。

一个是这个UR就把它改名叫UR嘛,然后username user呢就是写上我们的连接账号密码,这里呢给可以,其实在上面那也固定,也可以,在这里写上,就是连账密码,root这里那就是密码是吧,对吧。

然后这里呢你看到啊,他为什么报红呢,爆红我相信大家都知道吧,就是没引用那个什么东西嘛,哎给大家看一下哈,嘶,来把这个引用一下就可以了啊,好可以了啊,java里面SQL的新注意啊,来这里不包红了,对不对。

那这里呢就把写上去了啊,这个root里面的单引号不行啊,你双引号看下啊,讲单引号双引号的问题啊,哎呀我真是服了啊,咱要讲单引号方向问题,这个java里面的双引号还要注意啊,大家不要搞错了啊。

哎呀真是麻烦,写的时候真是麻烦啊,好这里呢就把这个东西把它写好了,然后这里,他有一个这个异常是吧,异常也是一样道理啊,刚刚那刚才的思路了,把勾位上自动帮你这个代码补齐呢,添加异常啊,再添加上面去好。

这里就没有波异常了吧,好这个注册完驱动之后呢,我们再看他下一步啊,建立数据库连接好建立了建立之后呢,我们来试着去看一下,它能不能有没有数据库连接,我们先把打印一下,调试一下,看是不是能够通讯啊。

system点POKEP,先看一下到底有没有啊,就打印这个连接请求软件请求这个嘛字吗,打印一下啊,我们先来尝试一下,看一下他是不是能够啊,来点一下这个地方运行这个代码来运行,看他能不能啊,大家看啊。

它就有一条信息了啊,你看是不是有一条信息了,如果说异常的话,我们看一下,改改个错误密码,那root把它改成root s,我们运行,你看他就会报异常,运行啊,那你看是不是报错了呀,对不对。

所以说呢就刚才表示说已经连接上去了。

连接上去之后,接下来是不是就是好,我们来执行呀,创建这个SQL语句,然后再去执行这个这个执行SQL语句啊,对不对啊,大概流程就这么一个情况吧是吧,那这是他的执行SQL语句的那个写法了。

咱也不用写这么多啊,你记住就可以,其实也蛮简单的,就是你自己呢自命好,一个是个语,然后把执行就完了好我们定一下吧,也是声明一个STRUST啊,对STRATION,然后呢circle呃,声明一个语句。

比如说snack的sing for news是吧,这是我们刚才那个语句,对不对,来是60查询这个60的内容,就查这个几个地方,然后呢再怎么办呢,就是要把这个语句的执行,它的执行呢和MYSQL那些呃。

和pp那些不一样,它是需要先怎么办呢,啊就是说这里的注册完之后啊,建立数据库连接,然后执行语句的时候呢,他是先要创建这东西的来执行,他有这个讲究啊,而且如果说采用预编译。

还会有另外讲究不一样啊,来创建这个东西去执行SQL语句,来我把这3号呢,那当条执行语句把它复制过来,简单把写到这个地方来,那这个地方呢我们就用这个东西呢把它解收吧,取名叫rs。

呃这个语句呢他是执行exe update,这里还不一样啊,呃很多东西都不一样,来这个地方呢要改成QLY的啊,它与执行语句不一样,还不一样啊,JS1QYY要这样子啊,update是执行update语句。

这里是snack的语句还不一样,刚才那个写法是执行update语句,如果你不懂还不知道啊,哎他这个是执行update语句的,用这个EXE这个才正确啊,update这个不对。

那这个呢就把写上去2S就是我们结果记录,我们呢可以调试把它输出一下,这个结果呢把它输出一下啊,然后呢我们试着去运行一下,看一下,现在啊首先是数据库连接,把它输出,看能不能正常连接连接删了,然后你看啊。

后面有个输出结果也是这个结果2S,但这个结果呢我们把它取出来。

它的取结果是用什么语法呢,下面说了啊。

就把这个东西呢用RST结果,其实在这个内存表里面,就这个来解说的内存表rs。

然后呢用这个while条件去把它进行便利。

然后如何写呢,给大家显示一下,这是一个为真的写法,然后rs点nest就是读取下一条数据,然后如何在里面读呢,get读取读取,get i n t读取里面的第一个值,第一个页面的值。

比如说我们读取看下数据库的结构啊,前面是id就写了id,然后呢由于它是int类型,我们就声明为int id等于这个值。

同样道理,再声明一个string类型,第二个TITLEPNG是吧。

这个可以随便写的啊,这个可以随便写,就叫T2T21吧,等于2S点get string得到里面的值是吧,就得到里面的字符串值,得到联名为PNP1把写上去PH1,接着来PAP1哎哈。

啊这个PHE下面的TITLE这个联名值啊,两个对应上就取里面这个东西好,然后后面还有几个啊,我们就依次复制一下啊,然后呢去替换一下就可以了,呃第二个呢就叫HEER把命名这个名字吧。

也叫第三个呢叫s u b header,我们就加个s he特,第三个呢是这个computer computer,第四五个来自image对吧。

取这里面的所有东西嘛,然后这个呢就是把写进去,然后联名的这个是SUBHEER,这个是SUBHTER对吧。

然后这个是content,啊这个是image,对不对,好这样子呢就写好了,以此呢在提交结果之后呢,我们再把它怎么样输出一下,输出一下这几个地方的id输出一下,然后呢加上嗯嗯然后中间画个这个分隔符是吧。

然后呢后面就是title,对不对,后面才是这个HT,再是这个hunter content,然后在中间呢我们就想这个东西嘛,对不对好,我们来就是content content。

后面再加上一个这个image,把都输出一下,结果对不对,这样写好了就可以了啊,我们试着去运行一下,看一下啊,是不是能够得到结果运行你看是不是得到了,以为id值小于安全博客,第二个值,第三个字是销量。

培训开课了,小学培训开课了。

第三个非2021杠三冲,然后还content content值呢有点多,所以是关于安全这一大堆,后面呢就是image来获取到image的这个值了。

对不对,这个就是一个用JDBC去操作啊,java里面用JDBC呢去操作MYSQL数据库的一个例子,那么大家试想一下,如果这里呢SQL语句,这里我这样子呢去再操作的话,比如说我得写个条件。

well id等于,然后呢再加上我们一个变量id,而这个变量IP呢,我又从刚才这种方式里面去,用这个浏览器输入的这个id值来决定的话,那么就重新组合这个什么,是不是就重新组合这个SQL语句啊,对不对。

那这里就会不会造成一个社合租呢是吧,就会造成社会注入啊,那么造成这个注入啊,java中呢又不容易产生这个注入,有什么原因呢,它这里面呢又会有一个叫预编译机制的,一个安全问题,我们这里呢可以看一下这个。

额这个什么安全的一个开发指南,你可以看到啊,java的一个开发指南,这里有没有写这商机和打包的啊。

啊这里没写啊,因为他这个是java开发指南。

并不是这个JAA1的啊,没有写,但是网上呢你可以看到啊。

呃它有一个东西就是这个预编译啊,这个呢我们现在暂时不讲啊,下节课再讲my base的时候呢,顺便把这个东西讲一下,那么什么叫预变异,上节课呢大家有问过这个问题,现在呢我没有办法不给他先实验啊。

我先给大家说一下这个呢是什么东西啊,预编译是一个什么东西,其实呢很好理解,预编译就是提前编译啥意思啊。

我们先把这个预言解释清楚,为什么说java中容易产不容易产生SQL注入。

就是因为他写预编译的非常简单,就在这里呢我们是这种写法哈,写好就说如果说是这里呢,就像我刚才说的那个意思啊,他这里呢写成一个id呢,加上一个变量对吧,这种拼接写法写成个变量呢,加上后面去这样去写。

而这个id呢,我们又从这个什么可以在这里去顺打个ING,这个id等于什么啊,等于这个像我们刚才说的,用这个封装好的这个什么啊,封装好的这个嗯app的这个东西呢,来去接收这个REQ啊,这个东西是吧。

就是说我们用刚才A这个STRUSS那个方法呢,来结束这个浏览器数值啊,我们先不这样写啊,像这里呢就是假如说这里有个id值这样拼接啊。

那预编译它是一个什么概念呢,我们来给他说一下。

接着来啊,这个JDBC里面的这个语编译啊,其实很多这个下面的都有啊,他是一个什么逻辑呢,就是不改变执行它的原理呢,就是,提前呢编译好这个执行逻辑啊,你你租的这个语句呢不会改变原有逻辑。

这句话你如果你不理解。

是非常难理解的,啥意思,我们来写个简单例子啊。

他的这个交易变异就是提前变异,比如说像我们之前这个snack for60,while i id等于写个东西是吧,就是说写个id等于乙好,那么呢他在这里面写个问号预编译写法,然后呢你在输的时候。

你比如说id呢,我传参id等于是吧,一然后呢我再传个id等于一,然后后面写成an的移动移呀,或者是什么问号id,等一下什么un snack呀是吧,这种注入语句,就说我们写这种注入语句。

那下面两条都是注入攻击的语句,为什么预编译能够阻止它呢,其实就很简单,他把这个呢提前预判了啊,逻辑啥意思呢,你不是说你预判逻辑,这里也是要拼接上去,你输按照这一他也会代入进去。

但是啊你这里输了就相当于是逻辑改变了,啥意思呢,就很简单,它固定死的语法已经固定死了,你如果后面加上了安等一等于一,这个代码呢就相当于执行了两条语句,自信点来几句,虽然说这个后头后面的and的移动移呢。

嗯对这个原本身呢它没有影响。

就像我们现在呢去执行这个鱼呀对吧,比如说啊while i d等于一是吧,我这样去写呢,它也是这个结果,我写个N的一问一这样去写,那它也是这个结果,结果呢都一样,但是这两个呢可以理解为逻辑不一样的。

为什么,因为你加了一个,就相当于说有两个东西,一个是这个,一个是and的,同样道理啊,你在后面写任何东西都,其实就是已经和它原始的那一条语句的发生。

更改预变,其实就是提前把这个语法固定死了,你在后面有什么and的UIN全部不行了,就是他不会相信后面东西了,所以他只会代入前面逻辑的。

能理解吗,其实就是相当于在过滤中把后面东西全部删了,提前已经编译好了,然后执行的结果就执行了,你后面说什么东西都没有了,这是那个预编译房子蛇口租的那个原理啊。

我不知道大家能不能理解啊,就上节课有人问到了啊,然后这个他是怎么实现预编译的呢,对吧,怎么阻止这个是个组呢,啊你只要理解的话,这句话其实之前我在学这个鱼变的时候,那我老听别人说鱼变鱼变,我一直不理解。

我说他妈的我输这个东西你也代入进去,你也要代入啊,但是这个语代入执行就是SQL注入啊,怎么就什么语病语病语病什么功能性,其实就是说呀他就固定死了这个语句,你在后面输什么东西。

都已经改变这个语句逻辑了,就像我刚才说的,你这里写201的结果,虽然说已知是吧,还有个指引呃,执行结果呢都是它也没什么毛病,但是呢你也看到这就相当于变成两条语句,这and的后面就像是另外一东西了。

同样道理啊,你说啊也是一个道理,就是和他本身的执行逻辑不一样了,就像你后面多了一个条件了,多了个安的条件了,他不一样了啊,我不知道大家能大家能不能理解啊,你不能说是过滤它,不是过滤他。

就是体现好把这个逻辑给他固定死了,你后面输什么东西都不行,就很简单,你你只要输and under什么ORUNIN,它能识别的这种SQL语句的这种内置函数就不行,但是你输这个东西回不回呢。

比如说我输个乱七八糟的,输这个东西,它会影响呢,就不会影响了,因为你这个是字符串,他就会认为这是一体的,而你只要输安德的时候,哎你说这样的东西它就会认为是一体的,这个id值就是一体的。

但是你如果说安的诶,安的是circle语句中的一个函数,就是在固定的一个东西,他就会问到and的哦,and的是一个SL与中连接东西,哎他就改变逻辑,你能不能理解啊,就说你这样去输,他没去输这些不认识的。

他没有毛病,它是一个逻辑,他会认为这是一个条件,但是你说and的就改变它的逻辑条件,就会认为这里的and的呢,就是数据库里面的一个是吧,连接操作连接这个判断操作,那这里呢逻辑就改了。

就他就不会认为这个安德呢是条件了,所以鱼变硬了,就会对这个东西的起止,所以这个东西向来不会生效,你这样理解呢是不对的,虽然说他的结果说说,不管你输什么东西,他都会这个呃,只要i id值是这样的啊。

但实质上更深层次的理解其实就是逻辑关系,其实就是说它不会改变它原有这个执行,执行模型,你在后面输东西的时候,你如果说and的,它就会改变它的模型了啊,就像说这是两条语句了,或者说这是有个价格判断了。

有这个东西代入进去啊,它不会改变它的燃油的逻辑和它的模型,所以导致呢你输这种乱七八糟的字符,他不认识的,他会代入进去,但是你输安的那不好意思,安的是SQL语句里面那个逻辑东西,逻辑函数,那它就不代入。

就这么简单,这样说大家就能理解了吧,那么他是如何操作呢,VV其实网上有讲啊,不过今天呢呃我们就不讲了啊,哎你可以给他看一下啊,这个写法呢就是一个PR1的一个东西啊,那网上也有这种东西啊。

下节课呢我们会讲啊,然后呢。

我们来思考一下刚才这个代码中的一个情况啊,你像刚才那我们说了啊,这里呢我没有加参数,我就要先固定死的啊,就现在啊这个地方我们写两条吧,免得这个把代码搞错了,啊这是我们第一条固定死好的这个语句。

还有一种呢就是我们说的有这种参数传递的,While1 i id,这个等于这个后面的一个是吧,加上一个这个id值嘛,对不对,这个id值呢,就是我们说的这个自己创建好的一个变量,对不对。

那这前面呢就是我们定义好这个语,然后面呢是加上我们这个变量,是这么一个在这么一个四个语句是吧,定义的啊,啊这里面就换成一个VRSQL对吧,就这样写的,然后呢你想预编译它是怎么个写法呢,他是这样写的啊。

编译就是我们写个server server啊,他就这样写,写个问号,然后呢这是哎这是那个,这个是我们说预编一些吧,把它注释一下啊,呃上面这个呢,这个是危险性警接线。

然后这个是我们的这个JDBC的写法,然后大家可以看一下啊,我刚才说了,如果我们这个时候如果说用到my bias,这个这个库呢来执行SQL操作的话,你看他是有怎么写的,你可简单先过一下啊,你看。

啊他说他这里也注入他的注入其实也非常简单,其实那就和他的写法有关系,但我们和那个PPTP写法一样,就是你按照它安全写法,那它就可以啊,不安全引发它它它它也能是能注入是吧。

这如果说你用这个MYBS呢去操作数据库啊。

他怎么操作的,这上面有些代码啊,他下面是讲的怎么注入啊,没有写它的具体代码,我们下节课来说这个买BIOS啊,和那个预编译那个操作啊,这这这这是体验写法啊。

那具体怎么操作呢,于编译呢其实就是两串代码的事情啊,那网上呢这里也有啊,那啊这里还有这个案例吗,你看,那这样没,就这样一写就完了啊,就多了一条这个东西就完了,等于编译,那还写了两个问号啊。

多了个这个的p r stars啊,去引V就多了一个,相当于多了一个代码,完了啊就完了,就能阻止这个注入了,你说所以说为什么说java里面很难听到,说有SQL注入的原理,其实就很简单呃。

他为什么SQL注入少,第一个是我刚才说了啊,他的数据库操作呢有三种模式实现。

一个呢是我们讲的这个JDBC,还有个是下列课要讲的这个买BISS,同样的,还有我刚才说的那个HIBER那个那个库,那三个呢都能实现这个这个,sl circle的一个操作,但是为什么SL组少呢。

就是因为他三个方面里面都有一些内置的过滤。

那你只要稍微使用一下,那么就是安全的,只是怕你自己呢就和我刚才说的TP框架一样,还有些内置过滤啊,就怕你傻不拉几的,你偏要不怎么不安全,你就怎么不安全的写,那就难不住了哈,你只要稍微注意一点。

或者你在学开发的时候有一些安全知识点,那么基本上你写出代码就不会有这些安全问题,包括啊我们把那个买bios1讲,你就会发现为什么SQL注入不存在,或者说很少的原因,除了它本身这个内置过滤之外呢。

还有很多因素决定,像我们后期要给他讲过的什么过滤器,还有他的那个什么都成,就是刀层,现在我们还都是现在还没学那个东西啊,他还有个那个控制层啊,什么刀层,它的层面不一样,那里面逻辑也不一样,很复杂啊。

这个要自己学哦,学到哪里讲到哪里,了解它的区别之后呢,你才知道说为什么这个语言不一样,它漏洞这个主题不一样,就是漏洞容易产生,难以漏洞,不容易猜到洞,其实是和他语言的一个特性相关的。

就是语言的其实就是语言的这个根本啊。

这是我们为什么要学它的原因啊,你像现在啊我们把这个写出来之后,这里按正常来讲,我们这里呢是在这里直接执行的是吧,是这里直接执行的,那么如果正常来讲的话,嗯这就报哪个问题啊,哦这里啊把注释一下吧。

按照我们这个执行来讲的话,我们是在这里直接执行这个这个地方,对不对,但是实际情况的话,这里应该是要结束我们这个参数吧,还是接受这个什么,就像刚才一样,我们就是用浏览器去访问,然后呢去传参。

这里呢来控制这个SQL语句呢,来来来来来来操作这个SQL的一个啊,显示这个数据的一个操作是吧,好那么现在呢大家觉得这个代码该怎么实现呢,啊那我刚才不是讲的这个呢,这是上面搞的那个诶。

那上面搞的那个操作吗,那跑哪去了,两个代码不一样啊,对不对,这里不是要解释i id值为一吗,这个一应该是由浏览器传传传入的,那么我刚才讲的时候呢,呃在这个文件里面呢给大家演示过是吧,可以在。

可以在这个里面呢去操作是吧,在这里呢我们演示过来啊,结束这个值嘛,这样去结束,但是由于啊他这个Z呢它是继承这个方法,而我们这个文件里面的这个my my sect,这个个人呢里面没有继承类是吧。

那我在这里呢直接什么这个REQ呢,它都不识别,都没有这个东西咋办呢啊难道说在这里继承吗,啊大家问一下,是不是这个情况来继承这个东西吗是吧,继承他,哎写错了,是不是这样写啊,你看是不是这样写啊,你看。

是这样写吗,大家觉得这样对不对,这样对了之后呢,你说这样的IQ还是没有,那还没有,为什么,因为这个IQ呢是在那个嘶呃哪个里面,刚才写的这个哪个里面,那住在这个类似的这个这个里面啊,在这里面有啊。

还有包括这个do get里面也有啊,那我是不是要声明这个do get呀啊生命do get,那这里是在main函数里面又该怎么办呢,所以这些问题呢都是大家要学的,它没有那么简单,你不要说哎呀我是学了这个。

其实这个东西哎呀好像还比较容易接触的啊,他这个下去开发呢和你听懂是两码事情,你会发现还有很多问题,就你这样继承之后呢,还很多,包括这个main函数,这是什么鬼呢,它其实就和那个INIT也差不多。

也是属于一种主导函数,就像我们那个Python里面写个秒一样,他也是说执行到这里调用这个东西的时候,它会自动执行这个秒,对不对,但是你这样一继承,你看啊,我给他运行,它会报错,它会报错啊。

你看会有什么情况啊,你看我我这样,这就是我下面还没有写这个IQ,没有说用这个a app这个standard呢,去接收这个网站提交的数据,我没有在写,我把它运行起来,他都会报错啊,啊这这个运行不会报错。

但是我这样去运行的话啊,你看啊用TM开始运行,它应该会报错,你看一下啊,是不是,诶哦这这边有个,这边有个托马卡的那个,我先把这个关一下啊,这个游戏。

好他没有报错是吧。

他没有报错,好没有报错,不是说这里没有问题,我们你看一下,我运行这里看一下,给大家看一下啊,那他说找不到和无法加载主类,为什么来,我把这去掉,去掉它哎呀,那去掉它就好了,我一加上去就报错了,为什么嗯。

很多问题啊,这都是要我们一一个解决的,入口好,你说这里是吧,就这俩,很多问题啊,这都是我们要学的,有些像这种东西呢,说实话他是这个java11开发里面的,一个基本东西,就是你如果学过java s1的话。

这个东西呢就知道怎么解决,但是我里面的没有教啊,java s1呢就是我们说的,我java1呢是面向这个web开发的一个技术,那JAVS1呢就是就是java的一个基础技术,就像我刚才说的啊。

不用去写这种WEBB的一些请求是吧,就像我们运行代码就直接运行啊,打包啊,什么封装界啊呀,什么写它加减,写它加法算法等等啊,那种很基础的,其实这就是理清楚这个java逻辑,但是你没有学过呀。

我这里面的讲这个S1的时候,遇到这个问题,说我想解这个问题,你没有学过,这他妈的,你说咋办呢,所以说啊这个硕士加java11对不对,而且都是较简单的基础,但是这个S1呢你没有讲过,没学过呢。

我只能说呀没办法撑着头皮上,我们只能说给你解决方案,你能理解你就理解,理解不了也没办法,你要说把那个叫什么java se1再给你讲一下,时间上不行呀,这个本身在这个意义上面,那些基础的这都讲不明白。

你还搞了个什么java s1,虽然说是先学java s1呢,再学java1,但是啊我们这没办法啊,这是要挑着学,所以那个基础没有,那真是没办法,我们只能说教你怎么解决啊,你只能说知道。

但是他为什么这样解决呢,讲不了,好这就是我们今天这个内容啊,那么从这今天内容那就是个开胃菜,不能浇太多,浇太多就就就完了啊,教材多就完了,本来这个东西呢就难理解,没有任何这个java经验没有学过的。

连这个目录放在哪里,哪里放哪里,他都不知道,你说怎么教太多呢,只能说对着牛去模仿,你先模仿再去实现这个功能,慢慢慢慢在碰到一些问题时候呢去解决啊,就明白了他这些目录的意思啊,包括这个什么鬼。

这个jr是什么鬼东西呀,为什么要放这个level里面啊,啊才能慢慢理解,因为像这些前期智能。

这是java s1学的,我们讲不了啊,然后你像下节课我们说的啊,像这个预编译的东西要讲,包括这个MYBS的使用也要讲,他这种下节课要讲的,对不对,因为你讲了JDBC,那你不讲这个MYBS,那等于没讲。

现在很多网站源码里面,那都是用my BIOS来实现数据库操作对吧,你讲个JDBC那不行,那些老程序采用这个JDBC啊,新程序都用买BIOS,不然的话都看都看不懂,那个数据库的一些操作啊。

也不知道有没有说有人注入的一些可能性,所以说东西还是蛮多的啊,不是说我们说为什么要讲个七八道子,七八次直播吧,你说讲java这个东西呢,你不提反虚的话,那也不行啊。

你反虚的话一讲呢啊反序环那个函数操作是吧,你讲的也太难哎,蛮麻烦的啊,开发还是要先讲漏洞呢,不能先讲,我们到时候呢讲这个东西操作的时候呢,安全问题给大家提一下,具体怎么利用呢,我们后面再说。

像什么还过滤器,这东西呢也要讲哎。

P33:第33天:JavaEE应用&SQL预编译&Filter过滤器&Listener监听器&访问控制 - 逆风微笑的代码狗 - BV1Mx4y1q7Ny

好我们看下今天的内容啊。

今天呢这个讲这个33天了啊,呃这今天这个内容呢是java的第二次直播呃,主要讲什么呢,其实呢就是上节课遗漏的这个预编译的东西,然后呢再讲两个东西啊,就是这个过滤器和监听器这两个的一个应用。

这两个呢在这个开发中呢还是比较常见的,就是这个java的原生态的三大类啊,一个是那个CIVILIATE,然后呢再是这个过滤器和这个listen啊,监听器这三三个核心啊,啊今天呢就讲这两个核心啊。

这个监听器和过滤器啊,然后呢我们主要了解一下啊,它的一个使用,包括它对我们安全这方面的一些影响啊,主要影响的还是这个过滤器多一点,而这个监听器呢,只是在分析这个代码逻辑的时候呢,有点用,不。

过这两个呢都会涉及到一个在我们安全里面的,一个很重要的一个支点,也是最近几年呢比较突出的一个支点,大家都知道啊,这个内存码的一个技术,就说你把这两个东西学好之后呢,你再去分析这个内测码的原理的时候。

他是有帮助的,因为在内存码这个知识点里面的话,就有这个关于finder和listen这两个的内存码。

我们可以看一下啊,这个内存码呢有些人不知道啊。

来这是一个我上网找这个图片啊,来啊web应用内存码,这个内存码呢是我们全新维持的一种基数,也是在最近几年比较火的,包括它上面的应用和检测呢,也是在这个蓝队,红队呢一个比较核心的点啊对吧。

然后你可以看到啊,他有这个SOLIOR呀,fighter和这个listen这几个类型的内存嘛对吧,如果说你有学过这几个东西的话,就像我们上节课讲的这个是吧,split和这个今天要讲的这个。

fighter和这个listen,这这两个呢主要是三个啊,那么讲了之后呢,你再去了解它的原理,和他为什么这个能够成功啊,这样子呢,去后期我们去分析和检测这种类似码的东西,的时候呢,他是有很大的帮助的啊。

所以今天这个知识点呢,和这个内存码呢是很有关系的,另外呢在这个代码分析和代码分析漏洞的时候。

那去看这个java代码的时候呢,这两个东西呢也非常重要,经常呢也要看啊,所以说呢这是我们今天讲的这个点啊,那么首先我们先来看一下商界合呢,没有讲完的这个预编译啊,如何解决,我们来呢看一下啊。

这个预编译呢是java里面一个类似的东西啊,其实在啊pp里面,或者说在其他的这个什么Python里面,都有这个预编译的一个概念,只是说在pp里面呢很少用庸,因为它用起来呢会有些麻烦,或者说它这个预边。

应该是在后面这个pp的版本之后呢才支持的,就是以前那些版本它不支持,他们以前没有这个概念,所以导致啊很多这个PB程序员呢,在写这个web应用程序的时候呢,没有去采用编译,从而导致这个SQL注入这个漏洞。

而java在它本身出来的时候啊,刚开始出来的时候,那就考虑到了,所以啊在java程序中,这个预编译呢是经常在使用,从而导致杜绝了这个SQL组的一些安全性,那么它是怎么实现的啊,我们给他看一下。

而且从这个上节课讲过预编译,它是一个概念啊,它的预编译呢其实就是他的这个字面意思,就是提前变异,然后呢解决了这四个猪猪问题啊,网上呢虽然说有说什么鬼啊,鱼鞭也绕过啊,就说你采鱼鞭呢我能绕过。

但是那个绕过那是基于一定的条件,不是说你写了预编译就一定绕过,不是S啊,如果说一定闹过,那这个东西呢就解决不了四个出入,那也不可能成为一个是吧。

我们要给他商量个支点,是不是还是能够注入,那有什么意义呢。

主要大部分是不能绕过的,基本上就可以等同于不能绕过的一个概念,好我们打开上节课的这个笔记啊,来这上节课的源码,我们来看一下这个预编译呢,它是一个什么概念呢,啊啊这是我们给大家看一下啊。

首先呢我这里呢先把这个VBA这个代码呢,给他删掉啊,然后呢我给大家看一下,这个没有编译的时候的一个情况啊,这里呢写了几个代码,这个代码是什么呢,啊这个can啊,就是提示这个输出输入的啊。

就是说我们在这个调试窗口上去输入一个值,给这个i id啊对吧,S字符串呢等于这个can list就是结束它的值啊,并把值写出来,最后呢再用这个SQL语句呢去拼接这个S对吧,这个呢是我们说的不安全的写法。

啊上节课呢还有人说让我多注释一些代码,避免的看不懂啊,我就给大家注释一下啊,这个呢就是我们说接受这个用户输入的啊,啊B这个变量足传的S结束,这是个代码的一个概念啊,然后呢我们看一下啊,用GPT注释。

哎呀GPT现在上不了啊,没办法,如果能上的话,我早就把它联通在上不去了,很多东西上不了节点老坏,我们看一下来这个呢我们刚运行一下,大家看一下啊,先看这个不安全的写法的时候呢,他的一个执行结果啊。

我再看一下啊,然后呢对应着我们把这个数据库打开啊,这个代码呢由于没有几行啊,就这么几个东西,我也没必要说哎呀,教大家怎么写啊,这大家看一下就知道怎么写了啊,就是这里呢接受用户的输入啊,创建一个对象啊。

接受用户输入,然后提示这个请输入id啊,你输入之后呢。

它也会拼接到这个SQL语句中,然后执行,那我们先在这里呢连一下的啊,他操作是这个这个查询的是60嘛,我看一下60里面的两个表啊,这那我就新建了一个啊萧瑟里安全博客是吧。

肖肖老师开课了啊,有这个内容好,我们先来看一下啊,来运行起来看一下,好他说这个请输入id,我们输入个疑呀,好他就截到一啊,这里呢执行语句是select sympfor news well,id容易对吧。

然后查询的结果呢是呢以小两犬。

博哥小的平分科了啊,虫好乖呀,那就是这第一套数据。

然后呢我们可以再运行一下,输入R,那是不是就会输入第二条呢,那输入R,然后这里呢就接受到这个监听R了,然后呢就是R的这个数据好,那么这里呢我们再来看一下,之前呢我们输入一之后呢。

就可以写个什么OR1等一,OR呢就是我们说的这个什么或条件,然后我们再执行一下,看一下现在哎,你看他现在呢,就是把第二条数据呢也给它除来了对吧,但与此同时也是一样道理啊,如果我这样输的话啊。

就是一个SQL注入,比如说我们这里输select123456,然后呢,我们显示一下这种数据库的一些注入语句吧,写上去,比如说这个user里面查询这个什么,这个相关的东西哈对吧,采用版本呐。

咱这个用户啊产生这个数据库名呀是吧,哎这些东西呢都可以查一下啊,看一下啊,我输上去诶,你看5。7。26版本用户root home host,用户数据库啊,demo01是不是就注入了呀。

这是我们后面要上的啊,这个猪肉的那些注入语法哎,这个呢不需要大家了解,这看到个效果了,就知道这猪了,你看到他SQL语句执行呢就在这里,那就执行这个什么语句就说结束了,一并且呢把后面的语句呢也结束了。

那后面语句拼接到这四个语句之中呢,就形成了一个执行前半部分和我们的再执行,后半部分,后面的就是我们通过这个SQL语句呢,来获取当前数据库的一些其他信息,比如说数据库版本,数据库。

用户数据库的数据库名等等,那么依次向下就是我们后面要说的四个输入啊,你看这个就导致这个注入就这里呢没有过滤啊,直接结束这个值之后呢,就给到了这个什么id这里啊,然后拼接这个S啊。

这个呢是我们说的不安全的写法,导致的社会注入,对不对,这调试呢能够看到个效果啊,嘶呃并且这里呢就注入的是一些结果,那么这是不安全写法,我们先把安全写法呢给它注释掉,然后呢我们看一下安全的写法。

采用预编译的写法,它和上面呢有什么不一样的地方,首先在定义SQL语句的时候呢,我取了个SQL名字呢叫S设备,Circle,就是安全的circle,然后后面是id,等于问号,写上个问号。

然后呢你看啊上面那就直接执行了,后面就执行起来,你看现在多了一个什么P21P话,对调用的对象连接的时候呢,去执行这个server ser,然后呢在这里的设置值一个参数。

就这个问号呢取代V把S呢把它替换进去,然后呢再去执行,就说我多了一个东西,就是多了这个东西,把它采用于编译,刚才那就是直接呢啊他拼接好之后呢,直接这里呢就怎么样执行这个SQL语句。

这里呢我们就是先进行预编译,后面呢再把它执行啊,后面再把执行好多了,这个东西那么多了,这个东西之后,我们现在再来观察一下,他现在注入大家可以看一下啊,会是个什么效果好,我同样也输入一好,我输一之后呢。

也得到了这个结果,对吧好,我再去注入给大家看一下啊,比如说我按照刚才那个思路来,对不对,这里写上相关的主语句,好我就查一个这个数据库名吧,执行他接收到的数据也是这个,那我这调试输出嘛,调试这个S的数据。

他这里呢也是能够接收到数据,但是你看那个SQL语句变成什么,Select sing for new swell id,问号,他并没有把这个数据接收进去,但是呢他为什么疏解输出出来了呢,哎再来看一下。

比如说输R它也能结束呢,凹对吧,但是你就是输其他东西的时候呢,他就不行啊,他就不行,0~56它就不行,对他就是这个啦,一直是问号,啥情况,就像我们说的遇变也就是什么呢,他不会改变他的逻辑。

就是他是固定死了,前面就是这个东西,那你不说,那我既然发这个东西,你不也是要把这个东西写上去,这样搞吗,是这样的啊,就像我们说的这个预编译呢,就是提前把这个语音固定死的,它不会改变改变它的逻辑。

如果你输入R再输入其他值,它可能会改变,来我们做个实验啊,来现在呢做个这个对应的关系看一下啊。

那这里呢我输了是这个这个值啊。

哎那么正常来讲的话,他是这么一个情况嘛,哈那解释这个东西,这这是要执行SL语句,但是预编之后呢,好看一下啊,好我们现在呢再来做一个另外一个结果,大家看一下啊,做个什么22回车,哎这里没有结果了。

来这里没有结果了,我输个22之后呢,它没有结果了,但是我们这样子再输入个这个东西,大家看一下啊,那1A执行哎,这里一的A呢又出现了结果啥情况,你看啊,1A出现结果好,再来看一安的哎,他也出现结果。

好再来看啊,一安的移等于一,嗯也出现结果,大警官其实啊就是说你在执行这个语句的时候,这个结果他是也是做了这个数据库的查询,结果呢也是正确的显示,只是说呀他已经把它固定的逻辑搞清楚了。

你只要是后面呢去有尝试查询其他的东西的话,那么就不行,他是这么一个东西啊,就说你这个语句呢你就只能获取这个数据。

这个预编译设置之后呢,你就只能获取这个数据,你想通过这个四个注入获得其他的信息,那不好意思,搞不了,就像我们上节课说的啊,他已经固定死那个SL语句的逻辑了。

那个里面的这个结果呢也是死的,你改你稍微再动一点。

他就不行了,所以说他也不是说不接收。

他也接收了,只是说固定死了啊,这个就是我们说的这个预编译,所以呢你用SQL语句去租他就不行,但是呢你正常查询呢,它又可以。

好然后呢这个预编译呢就这个情况啊,啊刚才有人又问说预编译怎么去注入啊,snap sleep是吧。

好那我给你试一下吧,你们有些人就是喜欢文吗,我可以去试一下啊,我们先看一下这个sleep的真正的用法啊,别人避免说这个是我写错了是吧,你看啊正常的和用法啊,id等移是吧,执行好。

你比如说我加这个安under sleep啊,延迟一下是吧,一秒钟啊,去看一下结果执行,你看延迟了是吧,大家看到啊,它延迟了对不对,在这是呢执行之后有延迟,结果呢只有慢慢显示,是不是啊,没问题啊。

来看一下来啊,延迟了,那延迟一秒钟,结果显示,那我延迟五秒钟,and sip来延迟五秒钟,一等等,123 15,好出来了,结果出来了是吧,好你看啊。

那正常来讲呢,我输这个它是不是也会延迟呢,来看一下呢,写到这里来呀,多会颜色啊,看一下啊,看他有没有这个东西啊,哎妈的书也不能还往前面插入的,执行有没有延迟啊,大家觉得有没有延迟啊,你不信我搞大一点吗。

这个延迟三秒啊,好像还看不到明堂,我延迟个十秒,延迟个五秒,试一下,来,延迟个十秒,这延迟了吗,没有延迟啊,没有效果呀。

嗯刚才有老公说这个BBA能不能绕过啊。

能不能注入,很简单道理,你想问这种问题的话,其实就是和我们说的那个什么挖虎老虎一样的,这个绕过呢都是要讲条件的,但是大部分的都不满足,除非是这个产品本身设计有问题,所以说他本身就是房租的,你还要绕过它。

那它存在的意义在哪里,就像瓦夫一样,你必须要绕过他,那是某些东西它能绕过。

但是一核心业务他绕过不了。

网上呢又讲这个,以便于这个什么猪绕过是吧,你那网上邮了呢,有种字典鱼边绕过啊,什么circle组这些绕过,对不对,但都是有条件的啊。

不是说你这日照日照,但基本上大部分都绕不了,鱼饼也绕不了啊,不要去想捞过讲的那种怎么绕过,那都是没什么用的,你实际中碰不到那种情况。

好这个就是我们说的预编译,再来看一下这个这个java的这个过滤器啊,首先呢我们先说一下这个过滤器是什么东西啊,过期呢它其实上那就是对web资源的进行拦截啊,啊通常呢我们用它是干嘛的呢。

啊就是说我们可以呢在访问的时候呢,对这个访问呢一般呢就是主要是拦截这个request,就是请求的,当然呢也可以对这个返回的response呢,进行拦截,它一般是开发女人呢用这个拦截器呢。

啊这个过滤器呀这个东西呢来实现什么,实现全新的访问控制,或者啊类似的什么压缩响应信息或者编码,或者说过滤一些敏感词汇等等,那什么过滤敏感词汇啊,什么编码压缩响应的,这个不是我们考虑的,这是性能是吧。

就是说访问的这个这个功能性是吧,比如说自动编码呀,或者说这个把信息压缩小点啊,访问更快呀,但这个不是我们关注的,我们关注的呢主要是和安全相关的,那么这个过滤器里面的和安全相关的,就是这个内存码的基数。

同样的,还有一个就是我们说的这个权限访问控制,它一般在这里呢和安全的会有相关系啊,所以呢我们先来了解一下,这个过滤器是一个什么概念啊,在讲概念之前呢,我们先看一幅图啊,这个图呢就是一个请求的一个逻辑。

就是java里面这个最常见的两幅图,都是讲的一个东西呃,客户端呢request的去请求会经过监听器,再经过过滤器,然后呢到达我们这个编写代码这里,然后呢再从这里呢去选择性的达不到数据库啊。

如果有数据库再返回来,同样道理,再慢慢的往回返,所以也就是说它和我们传统的一些那种开发呢,不一样啊,他是直接呢先经过了一次的监听器和过滤器,这两个啊这两个地方,然后呢才会到这个代码层。

这里是这么一个关系,所以这张图呢,也恰好说明了这个内存码的一个原理,内存码原理是什么呀。

来我们可以简单的看一张图片,看这张图片好了,这是我们一个java web的一个web的一个资源,访问是吧,首先呢它是从这个这里呢去访问它是吧,这第一步,第二步,这第二步,然后呢再到这一步。

最后呢通过它是吧,如果有数据库都连载到这里啊,返回呢也是一样,在依次往回推,那么大家看一下啊,他是说在访问这个代码的时候呢,访问这个应用的时候,先经过监听器和过滤器,你可能会问没有这两个东西怎么办。

没有这两个东西,那就直接到这里,是这个意思啊,好那么内存码为什么形成叫内存码的,意思很清楚,内存码呢就是说这个码呢写到内存中了,就不再代码中有提示,或者说没有文件,就叫无文件的一个类什么技术。

这是我们呢讲过的是吧,上期讲过的啊,这些呢会详讲啊,讲的更多也会更细啊,所谓仪器游戏的变动嘛,啊就是因为你有这个基础之后呢,我们才好讲啊,你没有这个基础没学过,都不知道这个什么监听器作用器是啥。

那怎么讲呢,啊,内什码里面呢,有这个监听器和过滤器两个两个类型嘛是吧,那这两个类型为什么会称之为内存嘛,其实你可以看一下它的流程,就已经代表了他是内存码的精细,就说其实啊我们一般的常规这个web后门呢。

是在这一层,是在我们这个什么代码这里层是吧,在代码这个实现日程,就说我的码是写到这一层,写到这个上面啊,有个文件,而雷斯马那是来到商医生和商一层这里,所以他在清理的时候,单纯从源码中去发现不了任何异常。

因为你的层面和别人相差了就很简单的道理,这个意思就很明显是吧,你的层次不够,我在说什么,你听不懂,因为你要慢慢的提高,那么知识点呢你才能跟上,就和这个道理一样的,我不讲,他也听不懂,那么很有道理。

这个内存嘛,就这个东西你和他玩的不在一个层面,那怎么去找他,怎么去知道这个原理呢,是不是那这个东西图片就说明这个道理啊。

为什么他能做其他事情,那么接下来呢我们就理解一下啊,这个现在呢我们就来看一下这个嗯,第一个啊过滤器,先讲这个第二个层面,过滤器啊,第一个层面是监听器,过滤器呢比较重要,大家着重听过滤器啊,好过滤器啊。

我们来给大家看一下啊,它的应用呢就是说啊和安全相关的就是内存码,包括这个权限控制,那如果说是从开发相关的话,就是能优化访问的速度,优化访问的效率,优化访问的体验啊。

这没什么说的,首先呢我们第一步啊创建过滤器如何操作啊,首先呢我们呢再给他新建一个项目啊,从新建项目开始给大家去讲啊,这里呢写个man for,然后我取名呢就叫这个by t e r,然后DOM是吧。

然后呢乙啊写这个名字啊,by dom1啊,这里呢选择web服务啊,dom cut嗯,1。8啊,都选好,下一步选择这个八版本的,下一步创建,好这里创建好了啊,然后把这个他由于他自带的这个MOVE。

这个仓库,我们可以把这三个文件给删掉,这个这四个文件把它删掉啊,这个无影响,让代码更简洁,删不删也无所谓啊,我这选择删掉它不影响啊,他主要是那个一个叫MOVEN的一个仓库,那个仓库呢我们后面会说。

但是那个主要是开发里面了解比较多啊,在安全里面没什么太大影响嗯,来这个代码这里呢我们来看一下啊,在这里我们就写一下代码了,所以呢我们看一下啊,我们这里呢就创建一个文件了,创一个文件啊。

就按照上节课讲的啊,上节课叫,就叫一个什么名字呢,就叫一个显示操作的吧,就叫一个,test啊,Soliet,创一个啊,然后这个呢就按照我们上节课的一个写法,去写啊,继承一下这个app的那个地方。

然后呢我们这里大角啊,比如说我检测一下啊,嗯检测一下,那这个快捷键呢就是alt加insight,然可以在这里呢找到一些方法呢,可那选中你要测试哪些方法,就相当于直的啊,就是alt加insight。

当然了,你可以直接在代码中写中提示也可以啊,这是快捷方法啊,alter就是a u a alt加上insight,就是我们那个剪啊,然后呢看一下它里面内置方法,我们就选取一个啊,把它直接写上去。

比如说这个内置的这个,啊就搞个do get吧,写上去就是说尝试呢有人访问这个do get呢,我们就简单的是吧去进行一个这个显示吧,比如说我们进行一个RUQ点get啊,结束这个值。

就说我们人家先提交检测一个值嘛,哈解释一个什么值呢,比如说发送回来的这个code code一个变量,然后呢复制给这个变量string类型啊,新类型呢写了一个叫也叫code吧,也就叫个变量啊。

他解释过来之后呢,再用这个,额结果啊,结果那声明一个这个OUT的结果,等于RESP点great,然后呢把这个结果呢给它进行一个打印是吧,打印出来,比如说打印这个code就结果了,结束之后呢。

平板在页面中显示,然后呢在刷新一下,最后呢再把这个进行一个关闭啊,这是个大概一个结果啊,就是有人呢尝试丢get啊,触发这个方法就是get访问,然后呢就接受这个参数值,code里面的值值呢。

再把它进行接收处理之后呢,打印在当前页面中,就这么一个情况啊,然后呢嗯按照上节课说的那个路由关系,可以在这里呢写上这个叫web site啊,也可以呢在这个它的配置文件这里呀,啊这里一个配置文件是吧。

也可以在这个地方呢声声明这个什么service是吧,也可以在这里呢去写都可以啊,那么都还是把它写一下吧,啊内蒙那就叫test split,对吧,然后呢再指向一个这个class。

然后呢class对象就是在那个路径啊,把它写上去,是不是就然后呢,后面再再写他的路由关系啊,诶那么然后呢对应的名字就是这个嘛,然后呢触发地址我们就写个叫gun test吧,对不对,这样就可以了啊。

当然了你再写之后呢,也可以在这里写了,这里也有了,这里有啊,那这里也可以这样写是吧,也可以这样写呢,然后呢这个写的就是直接写进去,刚test这样子呢就直接一不写就取好了啊,就算你用哪种方式都可以啊。

我们就刚才那个写法吧,好那现在呢我就把这个环境呢给他启动起来啊,给他启动一下,哎开启用一下啊,看一下这里啊,把这个删掉吧,用这个吧啊啊触发地址呢就是这个还有多mm杠,就写这个地址吧,应用啊,确定启动。

好我们这是上节课的一个支点啊,现在还没有加这个过滤器,我们先看一下大概情况啊,那么现在看一下啊,我访问这个test是吧,On test,然后回车啊,它是为空,但是呢我们一旦加上code等于123哎。

他就输出123了,对不对,它就输出一三了,就是接着扣了值呢,并码在页面中写显示嘛啊,好能够看到能够的结果,对不对啊,你就加什么东西,那就写什么东西,比如说我在那写个script啊。

如果说写script呢,它也会显示这个script,对不对,然后呢就像我们说的,它会显示到页面中,哎这里有弹窗,是不是就是一个典型的夸张嘛。

大家能理解吧,就因为这个这个代码呢啊会显示到页面中,诶这个代码一旦显示页面中呢,这个代码呢就被执行,因为这是个JAVASCRIPT代码,在页面中去显示的时候就会被调用执行,所以它形成的夸张。

这也是夸张的原理,虽然说我们现在没有讲夸赞,但这个一言诗大家也知道差不多原理了啊,诶这就一个夸张了啊,就执行一个JS语句,然后这个话语句一旦改变,就能形成不同效果是吧。

比如说现在呢我获取你的cookie,获取什么东西,对不对,这个地址呢就是一个触发夸张个地址发给别人,别人就中招,就会执行你的JS代码就是加叉SS的啊,现在呢我没有讲我们这个过一下啊,好那么现在呢你看啊。

如果要过滤,按照我们传统的写法是怎么写的呀,按传统写法,是应该在这个地方对这个code进行一个过滤呀,就比如说我现在呢传统写法,我就在这里写上写这个code是吧,然后呢用一些什么这种替换的呀。

或者说检测里面有没有关键字啊,对不对,这样去替换它,然后呢进行过滤这种传统写法,那么在java中呢,你可能在这个上面没有看到任何的过滤,但是实际上它又有过滤啊,有种情况就是我们说的过滤器。

那过滤器该如何操作啊,现在呢我们就来演示一下过滤器啊,然后呢你就先传了个软件包,软件包呢也叫这个名字,然后呢最好是把它放在这个啊,放在一个这个另外一个目录,这样子呢显示的会更加的这个。

增加了一个啊就叫fight啊,创建一个这个目录啊,创建一个目录呃,就是说你可以怎么办呢,啊我们可以自己呢再创建一个这个目录啊,再创建一个目录,就是把script放到单独一个目录,把这个。

额就是我们那个过滤的也放了个目录,这是一个开发里面经常做的,就是我们这里呢是讲的话还是规矩点再加script啊,就说我把这两个文件放到及格目录是吧,把它放在这个目录,那这两两个放这里。

然后过滤器的写这个目录都可以啊,当然你可以把都放在同一个目录,也是同一个这个下面也可以,只是说正常来讲的话,你一般碰上一些成品源码,它都是这么一个放这个目录,它会有个名字的,后来有个区分区分的啊。

好我放了这个目录之后呢,也基本上也不会受到影响,因为它很多东西呢也呢对应修改了重构,所以它自动帮你修复了,也不会导致项目会失败,好我们在这里呢就创建一个什么过滤器了啊,名字呢我们就叫叉SS是吧。

简单就把这名字就换成我们直接能够听懂的,XSS点final穿这个滤器,然后他是怎么过滤的啊,给大家看一下,那么这里有个叫IM,这个IM和那个ex这里有什么关系呢,给大家说一下啊,这关系就是上下级的关系。

这个是基层这个类啊,这个呢是相用这里面的接口,其实呢就是说你可以这样去写啊,Ex t h o d,然后呢指向这个什么HTTPSQUASS,然后呢想这个之后,后面呢再继承它里面的方法。

比如说我们给写个来split来,他有这个东西,再其次呢就是这个意思啊,他就是利用这个接口的意思,他和那个有一个等级区分,这里呢你需要自己下去简单学一下啊,这个是那个JVS1的一些东西啊。

好我们写好之后呢,在这里哎这怎么报错了呀,查找的必须声明为抽象或者实现方法类型,妈的搞得搞得把我自己都搞蒙了,刚才的对的啊,好我们在这里再选择一个实现方法啊,在这里呢呃实现方法有这么多。

我们选择来歌了是吧,兄弟来歌了,对不对,那他也这么多啊,你看看有有一大堆啊,啊这个有很多啊,然后这个是刚才引用的那个东西的,这几个参数值的啊,还有很多这个其他相关的啊,我们就换这个啊,换这个嗯。

H g d p server li,写这个好,这样就正常了啊,然后呢这里呢就写这个过滤器了,do呃,我们来把它进行一个outset excite啊,看一下,这个是那个app的过滤器写法。

哎这什么有点不同啊,等一下啊,我把它重新删除一下,还是要继承吧,嗯名字叫xss fight,那我还是继承一下看一下啊,好时间正常了啊,然后呢我们看一下它的类似的这个方法,Do you get。

然后我们这里那写什么呢,ini it的,这是m m it的啊,还有了一个i i it,还有个duce log哎,i it的啊,还有一个是这个过滤器的丢,哎不对呀,Find the gry,哦对对对。

是的啊,是继承这个过滤器,这个继承错了还继承这个嘶,然后看一下里面的这个,那这三个有三个嘛把都写上去啊,这三个那一个就是初始化的,还有一个呢就是销毁的,还有个呢就是我们说这个执行之后。

触发的这个地方三个地方,然后呢我们这里呢就简单的把输出一下哈,调试一下来输出一下噻,这个呢就是说这个XSS呢开启过滤啊,就提示这个信息好,然后呢这个就是说销毁之后。

那就是提示这个XS这过滤销毁销毁过滤是吧,然后这个是干嘛的呢,这个就是说过滤之后的一个结果,那么我们可以看一下啊,我如何过滤呢,首先啊这里呢我们就写个对应的这个东西来,去接受对方输入的值之后呢。

白进行过滤,如何进行操作啊,如何进行操作,我们是要把那个东西呢,就像说在检测之前把它过滤,我们先可以把跑一下啊,看一下这个效果啊,那如何进行过滤啊,大家可以看一下啊,我可以先输出一下,大家看一下流程。

只要执行流程就是按逻辑啊,好开始过滤,这里显示开始过滤,就是这个是开启过滤,这个是效果过滤,然后这个就是正在过滤,写个这个东西啊,看一下它的执行流程啊,好然后呢这个呢如何引用它呢,也是一样道理啊。

可以在web这里呢去生命,也可以在这写了,也是F来,那么它的过程基本上是一致的啊,名字我们就叫XSSFTR啊,你可以这样去写它,对不对,然后呢再就是他的class指向文件啊,啊这样文件的就这个地方嘛。

复制一下路径啊,接着来,然后呢下面就是他路由嘛,这路由关系F的这个map对不对啊,一是一样啊,然后下面呢就和这个上面一样啊,一个是flame啊,对不对,然后名字呢就和他对应上呃。

下面这个呢就是我们说的那个药要路径呀,对不对啊,就是斜杠什么菜啊,test就请求test时呢请求这个特色路径的时候呢,就会触发这个过滤器的名字叫这个,然后呢调用的是这个地方啊,就像是这个地方代码。

还有这个地方代码,对不对,然后就会执行这里面东西好,我们先看一下他执行逻辑啊,会不会那个啊,因为这个test呢就会请求这个什么哎,你访问test呢就会请求这个路径啊,你在这里呢写的啊。

我们都是在这个web xm里写的啊,都可以写的啊,你也可以写那个也可以写这个都行呃,我这里呢就还是用简单的吧,我怕有些人搞这个搞不明白啊,我还用简单的啊,我这里就直接写这个这个地方打啊。

出发路径把它写上去,它触发的路径呢就是杠test对,然后再X2test呢也是一样,也是有这个东西,艾特,然后叫刚才那个叫web civilit,然后这个叫WEBB这个啊对。

然后呢触发这个test就等同于就是说你这样写,就你两种写法都行啊,对两个小号都行,那就请求这个地方啊,我们来看一下它的执行逻辑啊,我们先来看一下啊,把它关闭,重启一下,我看一下啊,他先看一下他自己逻辑。

看下这个过滤系统啊,好我们先看一下啊,打开了打开之后呢,我们看下啊。

我现在刚打开,我还没有去访问这个test,大家可以看到下面已经调试了XSS开过滤,说明什么情况,我有没有访问test目录,因为访问test目录的话啊,访问这个test路径的话。

就会访问这个test civili,就会执行这个东西嘛,对不对,就会执行这个代码,但是我没有访问他呀,你看这个监听器这个地方就已经开启了,就说明什么在程序初始化的时候。

就和我们那个图片流程一样的吗,对不对。

我还没有访问的这个四维LT,他已经呢就已经访问这个F了,就是我们这个过滤器,其实呢他已经还访问了这个监听器,只是说监听器我没有用,它就没有,所以他就来到这个什么剪啊,过滤器则来了,这个是下面要讲的。

那他已经来到这里,就说我还没有访问你。

他已经触发这里,但是他触发的不是触发全部,他触发这个INIT的内置方法,就是我们的初始化,然后呢当我们现在我把它关闭之后,大家看一下,我关闭之后关闭之后哎他说菜是销毁过滤诶,我不是写了三个吗。

这个真在过滤,怎么没有啊,为什么正在过滤,是你触发了特斯之后才会运行的,所以这里呢啊可把简单的注释一下哈,这个地方呢就是这个du get的方法呢,它是啊触发了这个访问路由啊,触发的方法。

就是说啊这个访问了路由才会触发方法,而这个呢就是我们说的啊,就是在启动啊,服务启动后就是我们说的中间啊,启动后就自动运行的啊,就是初始化运行的,你启动后你不管,只要你光着打开了,它就这个东西就运行了啊。

这个呢大家就应该知道了,这是中间呢是吧,关闭后好,这是他的一个这个情况啊,那么现在呢这个地方的就就那个了啊,然后如何让它运行起来,我们再来运行啊,你看这个地方啊,我们把它打开之后是不是就会运行。

我们看一下,好你看他现在呢开启过滤之前呢,有人问为什么会执行两次,有些地方会执行两次,执行两次是什么原因造成的啊,是我这他妈的谷歌浏览器的插件,这个鸟毛插件做在做信息收集的时候,会把这个房屋两次。

就是浏览器房一室插件再调一次,所以导致两次大家一定要注意啊,如果你出现两次,就是这个插件导致的,妈的真的是坑死人啊,所以我现在都换那个裁剪,换那个浏览器打开,你是吧,好再看一下啊,然后现在出发这个地方。

然后呢我们看一下这个FTEST,大家看一下啊,放test之后回车,哎你看叉SSS正在过滤是不是出来了呀,是不是就像调用这个这个地方,Do fighter,然后你可能会问,那正面呢不写内容吗。

正面访问test他还要接受co的值才才输出啊,所以我在后面再写上干嘛,co的等于13哎他就输出了是吧啊,正在过滤,然后呢,你看结果也不显示,你看为什么不显示结果,我输六扣了一三次,应该会显示结果。

那为什么这里它还是提示正在过滤啊,因为这个地方要把它放行,要写个方形啊,如何方形呢,来给大家看一下,调用这个里面这个东西要不要方形方形啊,function这个请求和回复,这个你不要问为什么这样写啊。

就这样写啊,方形之后呢,就是有这个方形,这个是方形啊,就是之前呢你只是调试了,并没有把它放进去好,我们再看一下,你看现在啊他就是个完整的了,就是说提示正在过滤,然后呢再把它放行,我们看下结果啊。

打开之后提示开启过滤好,输入test触发过滤啊,触发过滤正在过滤,对不对,然后呢我再输入code,等123再把它放行,这个值是吧,那输出一个三。

你看它就不会,它也提示正在过滤,但是它它放行了,所以我就需要怎么办呢。

我的过滤代码来这个过滤代码就应该在方形前,对不对,过滤代码就应该在方形前把它放行出去,当某逻辑就是啊这个过滤代码啊,如果符合就放行,不符合就直接拦截,就是我们说的过滤,直接过滤就等同于我们拦截的意思。

能理解吧,就说我方形我就添加个规则,符合条件我就放行,不符合条件我就不放行,好那么简单的写一次代码就可以了,写个什么代码呢,就是接收这个参数值嘛是吧,就那写什么接收,就说这个是个XSS的过滤吗,啊过滤。

那么就是接收这个参数值啊,如果有这个什么攻击的这个payload的话,就进行什么拦截,对不对,最近拦截啊,那么呢同样道理啊,如果没有,对不对,就进行什么放行,这个意思是不是,那么如何接受这个参数值呢。

这个也好好理解啊,这里呢有这个对象吗,这个script是吧,刚好呢有这个东西,那么那就直接这里呢去写就可以了啊,然后教大家写一下,这个是写个request request等于,好这样应该可以了。

那这个request呢我们来接收一下啊,这个不要问怎么写啊,这其实就是调用上面列的那些东西啊,嗯request request哎,这个只有一个又写错了吗,妈的是不是这个问题啊,把这个去掉,看下,好有了。

get p哎,又写哪里写错了,他妈的,Solia h b soli,这个吧应该是应该是这个,看这个对不对,好有了,那么现在呢结束这个参数值啊,这个值呢就结束它那个code嘛,不是我也接受code吗。

我结束coder后面的值吗,然后呢给他复制一个变量,string等于这个也叫coder吧是吧,也等于它,然后呢我们这里进行一个判断,如果是吧,如果这个什么code里面点判断里面有没有值,有什么值啊。

比如说有这个什么script的这种语句,这怎么办呢是吧,有这个score语句好,我们就给提示一下是吧,这个存在XSS过滤,它存在它的攻击,那有这个代码在里面,那么同样道理啊,如果他有对不对。

就存在这个提示这个啊啊这个呢也无所谓,但那写个20里面写到里面去啊,这样子能写好一点啊,就有这个过滤就提这个啊,那非啊就是没有啊,这些个没有就让它放行是吧,就让它放行,那么有呢有的话是吧。

这就是提示什么啊,没有这个什么攻击配load,没有的话就放行啊,有的话就直接提示这个东西,那么就相当是不会放行,不会执行这里啊,就后面那就是相当是继续拦截,对不对,写好了,写好之后呢。

我们把代码呢运行起来,看一下是不是这个道理啊,大家看着啊,是不是就形成了一个过滤,吓我大跳,我还以为这个哎什么情况,半天不启动起来呀,哎哪里报错了,还,这报的什么错误啊,第一子错误啊,等一下啊。

哦可以了啊。

估计是刚才没有把他关关闭啊。

大家看一下啊,我我现在去访问啊,对这这浏览器和完了他开启过滤对吧,我访问这个test,这什么情况,哎呀这呀真是啊,你妹的一波接一波啊,有时候那是服务器问题,有时候是这个问题,搞都搞不明白,这东西。

他有可能就刚才说的窗窗户冲突那些情况,这里是个什么错误啊,啧哎呀,换个端口吧,好可以了啊,不知道啥情况,这个端口突然被占用了,莫名其妙啊,访问test嗯,他包了个来开,正在过滤好,我们先看一下啊。

我在这里呢我输cod正常的时候123哎,他输出123,你看正常啊,但是当我这里呢按照刚才那个需求的时候,我这个形成夸赞语句的时候,你看一下啊,我夸你就行,你虚的时候,那你再看一下,这是code吧。

执行哎空白提示什么存在XSS攻击,不显示了,对不对,它不显示了啊,这过滤就完成了呀,就现在他没有执行这个方形拦截到这里来了,程序就不再运行,所以他就没有压根就没有到这里来了,没有到这个特斯来。

他把拦截了,能不能理解啊,他要这样ZI,那才会把数据放出去,它才能正常显示数据,对不对,所以它显示的也是没有问题的,就是说你这里呢是这个语句的时候。

哎,它不显示哎,但是你要换成这种正常的哎,它就显示是吧。

因为它呢正在过滤,然后过滤了发现呢你是能够攻击啊,就是好的,正常数据好把它放行出去,然后再传到了这个什么这个test civiliz来,然后呢执行后面的这个代码啊。

刚才那就是攻击语句里面有这个攻击plow的,那导致呢他就直接呢来到这个else里面,因为这是个非嘛,就是说检测到有这个script,然后呢直接只提示差在攻击,然后呢不再放行,就是一直拦截到这里来了。

嗯好这个呢是我们这个XSS,那么像未授权那些东西呢也是一样的道理,那么也是一个大概逻辑,我可以把它简单写一下,就比如说这里呢我们再创建一个这个,ADD me点select就是模拟一个这个模拟一个是什么。

模拟一个这个后台的,一个这个这个这个这个这个后台的页面,对不对,我这个后台页面啊,然后呢也是一样,这个do get呢把它写上去,比如说我们就简单代码来copy一下啊,叫他来啊是吧。

就简单打印一下就可以了啊,那就直接打印吧,直接打印下,好就直接直接用那个ISP呃,把它打印下,嗯就直接用这个打印吧是吧,这个编码和什么头部这些东西呢,我们就不把它输了啊,就直接打一个,三还是十节编码。

好我就模拟一下啊,这个呢就是说进入这个地方的一个情况,那么再来做一个简单的一个判断啊,这里那就直接进入我们直接访问这个地址呢,再把它写成个路由,C好路由地址,那就是访问ADD me页面是吧。

那有大小有过滤啊,有大小区分的,所以这个大小写大家注意一下啊,去请求这个地址之后呢,就会触发这个欢迎这个页面好吧,我们先把它运行起来,只要请求阿德米,然后他就会提示这个东西。

然后呢我在判断时候判断他是不是阿米啊,我们看下啊啊阿米啊,提示欢迎登录ADD云界面是吧,能够有个提示啊,好那么现在呢我写个过滤器,那么呢再加上一个过滤器叫ADAM米,fight12过滤器。

名字也是按照刚才那个逻辑来,也是按照刚才那个逻辑来啊,也是刚刚那个逻辑来啊,额怎么写呢,嗯也是那几个方法嘛是吧,也是那几个方法,一小区啊,ES的,嗯这里呢就是那个过滤的啊,然后呢我们用个什么过滤呢。

就实现原理,那就是这个检测用cookie吧,cookie最简单嘛,cookie的一个过滤啊,选择cookie的过滤啊,同样道理呢,也是这个和刚才这个XSS呢是差不多的。

就检测到里面那个cookie呢是否有有cookie,里面的带什么值呢,就让它放行,那么也是和刚才代码一样,把这两个先拿过来,在这里写一下啊,啊这个呢就不再解释这个了啊。

这个就是直接REQ点reget cookies,然后呢再声明一个这个cookies,然后cookie等于这个值,然后for循环呢把这个值取出来,这个就是cookie那个机器啊,如果说你不懂的话。

可以查一下啊,比如说这个java web的一个cookie的一个获取,这网上都有啊,cookie呀,C型呀,或者说那个JWT的啊都可以啊,这个是无所谓的,你也看下啊。

他的一个简单获取cookie那个代码啊,来这里有,完了这个for循环啊,还有网上很多的这种,cf嗯都有啊。

来进行for循环,然后我给大家简单说一下,简单写的话就可以这样去写,三分之1I等于零呀,然后呢这个I小于等于这个cookies点呢起路径,然后呢再喂在家加,那这个呢把它声明一下。

哎这个是cook没有生命啊,好啊,声明一下,来加个这个东西啊,啊有这个东西之后,然后呢在他去取他这个值啊。

取它值,这个呢你可以在网上,那就是这个为什么这样写啊。

这个网上是有这种代码的啊,我虽然没有商啊。

没有伤,但是这个东西呢是一样道理,你看他这个也是一样的道理的,你可以看一下呢,他也可以这样写来获取它的一个值,我们可以把它通一下。

也可以这样写,这是获取cooking的类名和这个打印这个地方,然后这个是cookies,好我们给大家看一下啊,给它打印下,打印一下这个lemon,然后呢再打印一下这个C维度,那获取一下,看一下啊。

啊这里呢后面呢先把它放形象,这个方形是先要做的啊,等下让我们再判断,就说先判断这里的行不行啊,那先方形一下,就说先判断判断之后呢取cookie,然后呢我们等下再判断这个这个方形啊,不先不管他来。

然后再给他去调用它的路径嘛,路径就是这个alt web fight,然后呢是请求这个ADD me是吧,就出发来运行起来,先看一下啊,我们访问里面的cookie。

是不是能获取到一些这个访问的cookie信息,好我们看一下啊,呃现在呢你看xx过滤开启,然后这边呢我没有写啊,这个没有写这个enemy的过滤开启,我就先看这里啊。

看一下我们这个访问ADD me目录的时候,会不会打印一些信息,访问艾米之后呢,你看是不是有cookie信息,你看好安德米呢,你看一下这个关系在里面哎,来网络地址这里啊,刷新一下,你看看阿米的这个响应包。

可以看一下,在这里请求包这里呢是有cookie信啊,你看是不是就获取到来了,一个是pp store,还有一个是这个j s session id,这也是获取到两个,你看对不对,然后再发行。

所以我现在呢就基于一个很简单的判断,就写个什么呢啊简单过滤,这个呢是取出过滤它写下啊,这个是对这个cooking值呢进行这个编译啊,显示,对,那现在呢我们这里呢也是把它写好点对吧。

写完完整一点split了,打印是吧,这个是ALEMY简称,身份检测开启对吧,然后呢这个是,这个结束之后呢,就是检测关闭一,销毁,好这边呢就是在检测之前呢也给大家提示一下,提示一下这个检测进行,对不对。

这个是开了开启好这个进行好,这个呢就是判断一下,我们这就纯洁的判断一下嘛,就判断下什么呢,if这个C雷姆就是我们说的获取它的名字,C类目里面点里面有没有什么啊,CNM就是获取它的名字叫user。

并且并且这个值等于什么什么,就是他他的那个好不点,你们单位的这个值带什么ADM,是吧,然后呢,如果他等于就让它保行else,就怎么样输出一下,调试一下是吧,非法访问不是管理员用户访问,plasma关于。

好来跑一下,就检测一下这里面的这个CNM啊,里面是不是user啊,值呢是不是等于2米,那么等于方形不等于非管理访问,来看一下。

好我们看一下啊。

现在呢我没有加任何cookie,我去访问enemy其实是什么非管理访问,看到没检测到啊,非管理访问,对不对好,那么现在我们来尝试修改一下cookie。

看一下啊,在这个应用程序这里,那找到这个地方来访问,这个地方加上一条user值呢,为AD米写上去,再来刷新一下,看现在啊,先把它清空,那获取到user admin,欢迎进入管理员界面。

这是一个简单的用cookie呢去验证的一个情况,就说我们在这个页面中呢并没有写任何代码,但是呢在过滤器里面实现了这个cookie的一个检测,那么同理啊,在C型里面也是一样道理,对不在C型里面也是有道理。

那么你可以说我没有讲C型呀,那马上监听器我们也会讲到C型,在这个java里面除了cookie session,还有高端的技术用到JWT,就是这种全新的也会在后面讲。

但是我们单独在讲身份验证的时候会讲JWT,就说生的颜值呢可以采用cooking,也可以它C型好,那么呢也可以采用JWP,还可以采用其他的JWP那个技术呢,我们后面再讲这个身份验证。

这个功能实现的时候再讲好了,这个C型呢这个库啊,这个过滤器这个支点呢我们就讲到这里。

从这个字典这里呢大家就能看到了啊,我已经用了这个两个案例,就是这个,这个payload检测啊,PYO检测权限访问控制,包括后存内存码,我给大家演示一下啊。

现在呢我给大家检测一下内存码这一个东西,你看我这写了两个哈,我把它关闭一下,现在呢我们来模拟一下内存码的一个简单实施。

看是个什么情况,大家就知道了啊,这不用看原理。

简单来说大家看一下啊,额模拟一下啊,这个模拟呢不需要大灰,因为这是后面字典,只说我讲到的开发呢顺便提一嘴啊,就是告诉大家我们学这个知识点呢是有用的,它是便于后期对一些更高级的知识点呢,能够知道原因。

并且呢能够拓展避免了是吧,你这个下去之后都不知道它原理。

也谈不上这个如何检测它,首先呢我们可以用一下哥斯拉这个,后台控门工具,在上面呢我们做一下简单实验是吧,比如说我们先生成一个后门,这个呢不需要大家理解的啊,就是说我们来丰富一下,就说学完这个知识点呢。

它其实是和和我们的很多这个,这个安全相关的啊,那讲一下java这里生成一个这个JSP的,然后呢放到桌面啊,然后取名叫疑点J档,疑点JSP啊。

写上去,然后呢,再把这个疑点JSP呢,放到这个我们这个目录里面哈,这是程序的web目录。

放这里面啊,然后这里那就把启动,那么现在呢就是先有疑点,JSP的放到我们的后门,我们来访问一下一点JSP啊,好我们呢再用这个home门工具呢去连接上去。

你说我是讲开发吗,不是的,完全都是为了我们后面那些高端置顶,来做准备啊,连接上去了,好看一下,R连上去之后,他这边有几个功能,大家看一下啦,一个辣椒叫什么,哎,跑哪去了,来mori cell内存嘛。

还有个叫什么,你看fight sell,什么是我今天讲的这个监听器shell啊,然后你看这里有个什么叫get off file,然后那个什么a ADD file cell。

还有个叫remove remove,这意思说获取所有添加和移除是吧,我读的不标准,但是你妹的我我英文看得懂啊,你不要老说什么我英文差是吧,我也不差的啊,只读的差了点啊,不好意思啊。

你看啊那获取所有的这个监听器,点一下,你看他获取是什么那个科目,那这里有个叫admin,还有个啥叉SS,这是不是我这个项目生命的这两个呀,这是不是我生命的这两个呀。

然后你看下面还有个叫什么tm cut verbs,Websocket socket,就是什么tomcat的这个网站的这个socket嘛是吧,有一个那你可能会问,那这个我没有搞啊,这个是中间间的。

这个是中间间的,明白没有自带的啊啊这两个是我们项目里面的,然后你点一下那个叫enemy fighter cell,就是添加,我们点击添加之后,他说OK好,然后呢我们再点一下获取诶。

多了一个对这多了一个多了一个,啥情况,多了一个,然后呢,其实就是说他在你这个项目里面,有新建了一个监听器,所以也就是说那个内测码的这个技术原理。

实现的,我们不说他怎么实现的,你先说流程呐。

就看这张图,好理解点了,内存码呢按照常规后门,那这是常规后门,是在这是在什么啊,长过后门呢是在这个里面在商传后门是吧,常规后门是在这里面在操作,而内存码呢他用的这里有个功能,用这里内什么,那是植物。

这里添加了个监听器,那么监听器你去访问的时候,我刚才说过,他的路径是先访问监监听器,然后再访问这个过滤器是吧,然后呢再去触发到这里来,是这么个流程,我的后门呢相当于是常规后门,那我在这里是吧。

就是我们的常规的是常规的啊,正常的啊,就是正常后门是在这里,对不对,在这个地方哎,你访问这里,那么说,其实就算你返回长度后面也经过了这两个地方,而现在呢它的内存码呢是写到这个地方来了。

内什么写到这个地方,那么我问你利用常规后门去找文件去清除后门,是不是找找这一层的地方,所以你清理内存嘛,应该是要来到这一层去清,如果说是这个内存码的话,那么同样如果是Z层内层码的话。

你是不是也要到这一层再去清理才行呀,所以说为什么说它的清理和常规的后门不一样,常规后面就是扫网站路径,因为扫网路径就是在这一层嘛,原代码是在这一层,而这个监听器呢,他是在运行的时候呢比他高一级。

所以刚才那个那个那什么都查不到,这来了,啊这个呢我不能再细讲啊,细讲就讲的内存码,到时候呢我们在讲内存码的时候呢,有这个支点之后,那就好讲多了,我再把一些知识点呢再做实验给你分析一下,你就知道了啊。

那么你就可以自己呢,知道为什么网上有些脚本能清楚是吧,但是你一些工具你不不能实现,就是要进行调试好,我们要进行调试才能清理啊,好这个呢我们就不说了啊,重启是不是可以解决,对的啊,重启能解决啊。

但是重启之后呢,要先把删掉,重启才有解决,如果你不删它也可以成功的啊。

你把这个清理了还重启,很麻烦的啊。

这个不说啊,我们到时候再讲好,这个是我们说的这个过滤器啊,过滤器这个支点,那么现在再来上监听器医生,那么从这个图片上面呢,大家也可以看到过滤器呢是在第二层,然后呢他是在第一层,就是在这里请求的时候。

首先监听监听器,监听器是啥呢,间隙我们解释一下啊,监听器呢他是专门来监控这个东西的啊,然后呢监控什么东西呢,给大家看一下这个参考文章,啊他这个呢是属于什么情况呢,他是监听这个,操作的可以说是先进操作的。

就比如说对象被创建呀,对象被销毁呀,它就会触发经济,或是对象里面的属性值被更改呀,或者说像有三大类,你想啊有cookie被创建,有这个数据被更改,有这个请求被创建,就是有请求的时候可以触发。

有这个cookie被创建,会会触发,有这个什么职被改变会触发,那他就不是说哎这个我访问某个特定地址,触发某个特定地址出发,不是这样的啊,他说你访问什么东西,你可以触发,但是呢如果说你有些动作。

那么一个呢那个过滤器呢是一些访问访问触发,而它这个呢就是什么动作触发,就说你有些人创建东西,有些销毁了,他就触发它,他其实和我们安全相关性不是很大,跟过滤器相关大一点,这个间接性的相关不大。

他的这个关系大,为什么讲,它是因为有时候啊,一个是内存码里面也有这个监听器技术,还有一个呢是我们做代码分析的时候呢,有些东里面会触发监听器,我们也需要了解的,要跟踪这个代码的执行流程的时候。

所以呢我们讲一下监听器啊,它比较简单一些。

我们来看一下啊,它是如何操作的,他是来去监听动作的,而不是监听你的这个访问哪个地址,不是这样的啊,就说你有些动作,不管你访问哪个地址,只要你有动作,你访问谁,我都监听,就这个意思。

那么它监听的一般就是这三大类,就像什么这个啊cooking呀,这个C型被创建呐,被删除啊,包括这个有请求数据啊,或者说请求里面有对象创建啊,还不给直,别改变,就是我们说的这个这个三类嘛呢,三内。

他一般用途呢就是我们可以看到啊,他有些用途哪些用途啊,这个写的啊,呃这个什么在线人数统计啊,包括我们要启动时候加载一些初始化信息啊,啊统计网站的访问量啊,它和一些企业spin结合呀等等啊。

它和安全相关不性很不不是很大啊,但是也有像我们内存码呢,也有这个也是个什么监听器类什么,包括这个代码分析里面也要会讲的哈,我们来这里呢再创建一个项目啊,就不用这个写了。

再创建一个项目嘶名字就叫这个建立起listen点,DOMO及,嗯创建,好样道理啊,把这几个无关紧要的给删掉,避免里面的看上去烦的很,也不知道是啥玩意,好那么现在呢我们打开它这个程序啊。

那监听器呢那就不卖关子了,直接开始弄也是一样道理啊,我这里呢就创建个目录来把它存放,哎先把这个路径吧复制一下,等一下呢好引用双键重新买一包啊,嗯名字就叫这个listen,好这是整体的目录啊。

把它放到这里面,然后呢这个就也放进一个吧,也把它放放到这个script里面啊,SOLIATE里面也放soviet里面,避免了啊,这里呢看得更加的是吧清晰一些,把放到里面去啊。

这个hello就放里面去重构一下呃,这个呢就先起我们呢先写两个这个演示的,先写两个演示的啊,比如说我这里呢就演示第一个啊,C,C型就叫cs c型C型C型的一个操作啊,C型点这个文件名。

然后呢再创建一个这个d n d session,那这两个代表什么意思呢,第一阶段destroy,然后呢C就是great,就是我们说的创建和销毁的一个前称,那这个呢就是创建,我们来继承一下这个方法呀。

嗯嗯这个AGB哎,那就用这个了,ABC型是吧,嗯session额写诶,好像不是这个吧,是那个AHTTP,B session,Session,写这个吧,创建方法,啊哦这个是写了个歼七里面的,搞错了搞错了。

嗯这HBC型就这个吧,就这个啊,呃我们在里面写个main函数,哎这里又怎么又不对啊,搞错了,这个,东西吗好使,这个C项我先看一下啊,先来个下实勋,哦还是要app的,好像是哎,对对对,搞错了搞错了。

这个是这个创建C型啊,然后还还还用那个app,那个不用这个,还用这个还得是它好用这个啊,然后呢我们在这里那就进行一个,这个do get方法的一个操作,然后这里呢就REQ2点get session啊。

这个就是创建session的一个操作,这个就是创建session啊,这我们就直接这里就相当于创建session啊,这个传的声音,然后呢这个创建之好啊,这个是创建C型啊,然后这边是销毁销毁的也是一样啊。

也没有什么抬头这东西啊,就是加一个那个函数就可以了,哎差点又写错了,也搞个就get吧,IUQ点,get session点I,这个是销毁,这个是销毁啊,呃在这个提示之前呢,我可以先输出一下啊。

先把进行一个输出,这样告诉大家啊,这个是我们说的这个销毁,销毁C型的这个代码段就进入到session销毁了,是吧啊,这边呢就去访问,那时候呢就提示一下这个,创建session,好这里呢是一个是创建。

一个是那个啊session和cookie呢我们前期说过啊,一个是绘画,一个是那个平局啊,啊这里面就两个啊,然后呢我们分别写一下这个路径啊,比如说这个叫OBSE,就不写那个配置路由了啊。

其他里面都可以在那web server里面去配置,在这里配置也是一样的啊,这个呢就访问路径就是创建嘛,我就写个杠cs啊,然后这个呢就是杠DS,杠DS好,我们先运行一下,先不把这个不把这个监听监听器写好。

先就说我们只传这两个啊,来看一下它是不是正常的。

好我们来看一下啊,现在访问那访问一下这个GCS,那创建session是吧,没问题,那DS那销毁C型啊。

其实也没问题好OK那这里大家就知道了,好像现在开始来搞监听器了啊,间期呢就在这里创建,我们就单独发了个目录啊,这里那就保存这个代码呢,公子是吧,就交一个这个C型的一个操作嘛是吧,那么就叫listen。

session这个间隙嘛好,那这里如何操作呢,那首先前进区,然后呢是这个C型的一个操作嘛是吧,对不对,那就选这个了呃,AHPC型listen专门来操控这个C型的,然后呢我们做个简单例子,看下它的存方法。

然后里面有两个,一个是呢窗建调用方法,一个是这个销毁的方法,好我们先来把这些去掉,比如说创建的时候呢,我们就输出一个什么,输出一个啊,这个,哎输出个什么呢,这个监听器,哎监听器,Session。

监听器啊,创建,监听到了创建啊,监听到了创建,对不对,就写个监听到创建,然后呢这边呢就监听到了什么销毁,然后呢让它生效该如何生效呢,它不是以路径去生效,所以他只需要写一个什么website。

web website就可以了,它的生效呢不需要写路径,因为它不是以你访问的路由去触发,它是用这个什么检测到哪个地方被创建C型,它就直接触发,知道吧,他不是说哎你访问那个地址之后才触发。

不是说哎我访问这个什么DSA就那个啊,是因为你访问这个地址呢,所里面呢有这个销毁C型,所以他才触发,不是说你访问这个D值触发啊,大家要明白啊,那个地址是触发这个代码,这个地方这个代码呢有销毁。

那有这个销毁工作之后呢,它就会就这个操作好,我们来分析一下,看看是不是这个道理啊。

好大家可以看一下啊,来我打开的时候,他说C型监听到了,创建C型监听到了创建啥情况,我运行的时候啊,好那么现在啊我们来看一下这个,因为它初始方法访问就会有这个创建啊,我们访问下cs执行,你看创建的C型。

对不对,创建C型,好我再访问DS,销毁的C型,你看C型监听到了销毁,看到没,当我再去访问cs,那创建了C型C型监控,监控到了创建,能不能理解啊,是不是这个逻辑,你来啊啦,我放cs,它会创建C型嘛。

访问创建C型DS待到销毁是吧,然后呢,我在仿cs,你创建了,并且我监听到了同样道理,我再访DS,你销毁了,我也监听到了,对不对,他是什什么一个逻辑啊,他的执行顺序是一个什么什么逻辑啊,很简单的吗。

就是那你访问的时候,如果你有创建session的话,那么这边呢就会执行这里就像说啊,这就是检测有session创建就会执行,这里,对不对,那么呢这边就是检测监听啊,监听检测销毁就会执行这里,对不对啊。

如果说都没有,那么就这两个这个监听器就相当是没有,什么都没有啊,如果说都没有,就是都没有啊,大家知道,如果说U没有创建呢,又没有C型,那就不会执行,但是由于我们网站访问呢。

它只会创建那访问这个地址时候呢,就会创建session嘛,所以说它创建session的时候呢,一个是执行这里创建C型,同时呢由执行这个地方监听器触发监听器,是不是啊,那比如现在啊我们再把清除我访问cs。

是不是创建session,并且呢监听器也监听到了,我为了这个更加的明了,我可以把这里再提示一下啊,这是什么,这个secret里面创建的C型,对不对,然后正面的就提示这个监听器,这面就提示这个什么监听器。

这面,是吧,检测到啊,把提示器搞得好一点,大家就能知道他这个逻辑对不对,那重新来一下啊,好来访问他为什么有这个C型啊,因为我们访问自带了C型,你看一下啊,他的访问这个数据包里面是有这个东西的。

它自带有啊,你看这里他自带里面有那个C型的,有这个东西啊,嘞它自带有,所以呢它自动的执行到了啊,我先把它清空好,我们先把销毁了DS访问下DS是不是检测到了,访问DSS就触发这个DSS这个java文件。

对不对,大家就提示啊,好销毁哎,你一旦销毁这里,那就销毁这个代码被执行了吧,一旦销毁之后诶,鉴定机发现了,你又销毁,所以他就像是执行者里,对不对,好,当我们这里呢再重新cs访问cs。

就是相当于访问这个什么CSC型这里,那么这里会创建C型,对不对,好,我们再访问cs哎一旦访问cs之后呢,哎这里那就执行这里嘛,你创建C型,同时呢监听器这边呢又收到反映了,唉检测到有C有这个C型创建。

所以又执行这里逻辑搞清楚了吧,那么你可能会问,那我一直访问cs,访问这个cs会不会一直创建呢,那就不会了啊,你比如说我一直访问cs,这里呢,他也只是呢执行了C型里面的这个,这个提示操作。

但是呢这个C型的没有创建,你看我一直访问弹呢都没有用,它只会提示这个地方监听器不会有任何改变,因为这个C型的创建一次就可以了,除非你销毁之后呢,再访问他,再创再创建,你重新访问它是不会创建的。

因为这个C型的关键呢。

就是我们说的打电话一样,你把浏览器重新关了,再打开它就可以重新再创建,就这个意思,那么这个有什么意义呢,对不对啊,就是我们其实就是说在后期代码分析的时候啊,我们要知道一些这种C型。

或者说一些动作被改变的时候,会不会因会不会触发这个监听器啊,监听器里面会不会有一些逻辑,我们需要了解,这是第一点,但这个呢这说实话在单位分析中遇到比较少,我们学习它的这个监听器,主要原因。

其实还是主要是为研究这个监听器的内存嘛,这是我后面说的,因为后面在蓝队课程里面,红队里面那是要学习植物类什么,红队里面那是要学习这个应季的什么对吧,把它写清楚点是吧,红堆那是植株,那么这里还有个啊。

蓝队是阴极,是吧,这个勒斯码里面呢刚才大家也看到了啊。

他这个LIA码里面呢。

我们这是整个内存码那个章节,这是内测码的全栈技术,常规的WEBB的呢sellate fighter,那listen list嘛,然后呢框架型的这个spin是吧,里面的这几个对不对。

也是有这个什么控制器的,那什么,那那中间间的tom cut的那TM下载的对啊,然后还有这个其他类什么很多了。

所以说内存码技术很多啊,我们说实话,如果说你要将江独讲内存码,你不了解java的话,是听都听不懂,你只能回中,但是你完全不知道怎么查,或者说也不知道它原理是什么啊,你必须要知道原理,你才能会查。

除非是一些傻瓜式工具是吧,教你直接用工具查。

但是工具呢别人不给你,那你怎么办呢是吧,所以说你首先要知道这个概念是吧,监听器和这个过滤器两个概念之后呢。

那么你今天学完这个知识点是吧,知道这两个东西,那么你再看你就知道了啊,简单知道了哦,这个这是过滤器代码啊,过滤器的什么,这个呢是接进性过滤器码,他为什么被称为这个东西呢,你也看一下啊。

他说什么传统的是在内测码里面啊,传统在本地代码对不对,然后呢,这个内测码呢,其实呢它就放在这个过滤器和这个,接近期里面啧。

那其实和我们刚才原理说的一样啊,放到了这个里面,放到这个里面对吧,然后那是我们传统的API开发。

对于传统的API开发呢,所以呢内存码呢也是这种传统的,一旦能用到框架型的spring类型,这个spring类型又出什么console intel,然后什么什么WEBOFISK。

这个这这个地方为什么又出现这几个呢,因为如果说用框架的话,那么他就会用到这三个,另外的三个东西,他就不是我们这里说的这几个了,对不对,因为是框架的,所以呢他就区分类别又不一样。

是new不一样咋办呢,难不难呀,卷不卷呢,大家可能会听的一窍不通,不要紧啊。

我告诉大家啊,你如果说能够把这个图片里面的这个内存嘛,全部理清楚,原理和查杀都会的话,那你就是蓝队的中高级,只要说你会在会的开发啊,我基本都是高高级级别了,蓝队的高级了,那红队我相信也不会低于初级。

应该就是个中级了,因为你有这个技术,你选红队也是很明显的。

那么但是这些课程的前提呢,是需要大家了解这个什么,了解这个java的,你不学哪知道呢,对不对,你不学哪知道呢,那么面试再问你内存码的原理是吧,或者说他问你这个内存嘛,这个什么内存嘛,就随便问你是吧。

这个这个久远经说的过滤器,医生或这个内什么是什么个情况,为什么为什么和哪些常规版有什么不同啊,查杀是什么,查杀你没学过,你哪知道,你说你告诉他,你用工具查,那显然不是大家他们要想要的答案。

他要的答案就是你能说的他说的原理,并且呢是吧,把流程说一下,而不是说我用工具查,虽然说网上有工具,但工具呢不是万能的,它只能查一部分,而且现在很多工具只差一部分高端点的茶小茶,全部的都是商业产品。

都是商业产品,都是网上一些商业产品,都是设备啊,这是软件设备,没有说这个网上的开源的,这个查所有类什么的,没有啊,全部是商业产品,而商业产品还不一定能查全部,他只能查一部分,那你就告诉我。

你如果懂得这个原理是吧,你就会自己查,这就是你的价值啊,对不对,你不是用别人的工具,你自己把它查出来,用这个知识点去分析来,你把它挑出来,哎那你说你不是中基。

你不是高级,怎么是吧。

哎呀就不说了啊,所以说java呢还得转不转不行呀。

不管是红队的这个直路啊,蓝队的直路,这个内测码呢,就和今天讲的知识点呢是息息相关的,如果说连我今天四点呢,你就听不懂,那内存嘛那个东西那就只能会用了,只能会慵懒,当个脚本小子。

那就完全不知道他是什么个逻辑的,那也谈不上说如何查杀他了,查杀他也是用工具想分析远你呢,那就是扯淡了啊,好今天呢就知点呢就讲这么多了啊,时间关系我们就不说了,大家有什么问题呢,就赶紧问。

然后下节课上什么内容呢,你看啊我这个字典上写的啊,来my bells sb m vc sb boot,这就是网上经典的SSM框架,但是呢我可能是教不了那么深入,我只能说给大家演示一下。

这个SM框架的一个大概情况啊,网上就是这个SM框架的一个开发,就是这个my bels sping spring mvc和spring是吧,然后呢还有几个这个第三方的这个框架组件呃。

小logo世界菲菲斯克JS文呢,那到时候呢会引个多忙的去给他讲,他logo的判断对吧,包括这里呢你看这个还有什么JWT啊,这个呢这个也是刚才我们看到那个框架里面的,那个那个那什么东西啊,这个也要讲。

是不是,所以说我这个把上面写出来的,这个基数和支点呢,全部是和我们这个当前的红队,蓝队的一些技术的原理和实现的相关的,这都是能够帮助你,不帮助你在代码升级中去分析漏洞,也能帮助你在这个攻击的一些这个。

技术手法上面去分析原理,都是有这个关系的,不管是面试也好,对你后期的成长都大大有帮助,说白了这个课程就是java安全,你说我没有讲JA安全,我里面的开发都开始讲了,怎么不是java安全呢。

已经是慢慢的走向高端的,不是原先不是原来基础number one,不要再这样说了,对不对,好了啊,今天就说这么多了,大家有问题就问,没问题就下了啊,顶不住了啊,那么后天呢是一号一号我们不上课。

下次课是什么时候呢,2号或者是3号啊,给大家说一下啊,下次个是2号或3号,不是一号啊,一号当天是五一不上了啊,如何排查内存码,如果拍成,那么大家可以看一下上期的内容,上期呢我有讲过。

不过呢我讲的都是用工具,没有去讲原理,而且讲的是排查一部分全部的没有啊,全部的我估计这期都讲不了太多了啊,这个内什么现激素也在更新迭代,很多商业产品都不自全部,很难的啊,这个东西。

好我们今天就说这么多了啊,大家有问题就问,没问题瞎了啊。

posted @ 2024-09-29 15:12  绝不原创的飞龙  阅读(313)  评论(0)    收藏  举报