webpack
什么是Webpack
官网
官方解释:webpack is a static module bundler for modern JavaScript applications.
翻译一下:webpack是一个静态的模块化打包工具,为现代的JavaScript应用程序;
我们来对上面的解释进行拆解:
打包bundler:webpack可以将帮助我们进行打包,所以它是一个打包工具;
静态的static:这样表述的原因是我们最终可以将代码打包成最终的静态资源(部署到静态服务器);
模块化module:webpack默认支持各种模块化开发,ES Module、CommonJS、AMD等;
现代的modern:现代前端的开发越来越复杂,催生了webpack的出现和发展;
即:无论开发使用什么语言,最终通过webpack将代码打包成普通的静态资源(详见下文:Webpack依赖图);
环境Webpack的运行是依赖Node环境的,所以我们电脑上必须有Node环境;
安装webpack的安装目前分为两个:webpack(代码使用)、webpack-cli(命令行使用);
这里推荐局 ...
网络安全修改
背景网站做完之后,移交给第三方机构进行安全检测,对”安全功能验证观察报告”指出的问题进行了如下修改;
接口重放什么是重放参考文献:基于timestamp和nonce的防止重放攻击方案
重放攻击指的是攻击者通过发送一个目的主机已接受到的包,来达到欺骗系统的目的。其基本原理就是把窃听到的数据原封不动的重新发送给接收方(好像修改了数据在发送就不叫重放了),即使传输的数据是加密的,窃听方不知道具体的数据内容,但是容易知道数据的作用(即使不知道作用也能对系统造成一定破坏),这时就能通过原封不动的重新发送达到一定的目的,比如:
影响数据: 重放添加接口可能会无限添加数据;
数据泄漏: 攻击者可以重复访问敏感数据,导致数据泄漏;
资源耗尽: 重复请求可能导致服务器资源的枯竭,影响正常用户的服务;
身份伪装: 通过重复使用合法用户的身份验证凭据,攻击者可以伪装成合法用户执行操作;
如何防止重放给每个请求加上不可复制、不可模仿的唯一标识:时间戳+随机数并加密;
时间戳
优点:服务端对请求时间戳进行判断,如超过半分钟,认定为重放攻击,请求无效;
缺点:时间戳无法完全防止重放攻击。未认证系统还是可 ...
Koa2实战
koa2项目实战本文所有代码已上传:github
项目的搭建目录结构的划分
按照功能模块划分:例如:控制器(controller)的放在一起;操作数据库(service)的放在一起……
按照业务模块划分:一个完整的小功能放在一起;
本文将用功能模块划分
1234567-src -main.js //入口文件 -app //全局文件夹 -controller //所有的控制器 -service //数据库操作相关 -router //路由相关 -utils //工具
安装依赖1234//在src目录下npm init -ynpm i koanpm i nodemon -D //-D为开发依赖
设置快捷启动12345// 在package.json 配置 "scripts": { "start": "nodemon ./src/main.js" }// 之后可以直接通过 npm run start 方式启动项目,不需要找目录结构了
入口文件
ma ...
Nginx
正向代理与反向代理
反向代理:服务端将请求转发给其他应用程序,比如转给Java;
正向代理:客户端使用,比如vpn;
一句话就是:正向代理代理客户端,反向代理代理服务器;
环境
win11、VMware17 Pro、CentOS Linux release 7.9.2009 (Core),Nginx-1.24.0、静态IP:192.168.209.111、192.168.209.112、192.168.209.113、192.168.209.114;
查看centos版本
1cat /etc/redhat-release
关闭防火墙:
1systemctl stop firewalld
重启网络服务
1systemctl restart network
反向代理代理网站123location / { proxy_pass http://www.atguigu.com/;}
在浏览器地址栏输入192.168.209.111,然后地址栏不变,但访问的是尚硅谷的网站;
代理网站,地址栏url发生改变123location / ...
https
调研背景
公司项目打算采用HTTPS来保证数据的安全性。在计划零成本的前提下,看是否可以实现HTTPS。
HTTP与HTTPS区别
数据加密:HTTPS 使用 SSL/TLS 协议对传输数据进行加密,使得第三方无法窃取数据内容。HTTP 传输的数据是明文,容易被黑客窃取和篡改。
数据完整性:在数据传输过程中,HTTPS 使用消息认证码(MAC)校验数据完整性,如果数据被篡改或者损坏,在传输过程中会被损坏。
身份验证:HTTPS 使用证书机制来验证网络通信的双方身份,加强了验证的强度和客户端和服务器之间的信任。HTTP 没有身份验证机制,容易遭受中间人攻击。
HTTPS 并不是一种新的协议,我们可以理解为HTTPS协议 = HTTP协议 + SSL/TLS协议。通常来说,HTTP 是直接和 TCP 进行通信的。当我们使用 SSL/TLS 时,会变成先和 SSL/TLS 通信,然后再由 SSL/TLS 和 TCP 进行通信。
SSL/TLS
SSL(Secure Sockets Layer)和 TLS(T ...
TypeScript
TypeScript是什么
TS是JS的超集,所以JS基础的类型都包含在内
TypeScript开发环境搭建
全局安装typescript:
1npm install typescript -g
查看typescript当前版本号:
1tsc -v
将TS编译成JS( TS 不能直接在浏览器执行,需要编译器将TS转为JS)
1tsc xxx.ts
基础数据类型
基础类型:Number、String、Boolean、null、undefined以及 ES6 的 Symbol 和 ES10 的 BigInt。
字符串类型12345678let str: string = "这是字符串类型";//上方我们将str这个变量定义为了string类型,如果对他输入其他类型的内容就会报错,例如:let str1: string = 666;//这个就会报错了,会提示你不能将类型"number"分配给类型"string"let muban: string = `web${str}`;//我们也可以使用E ...
NodeJs 登录凭证
登录凭证
登录成功返回凭证:cookie+session或者是Token令牌;现在基本都是Token令牌作为登录凭证;
为什么需要登录凭证呢?
web开发中,我们使用最多的协议是http,但是http是一个无状态的协议。那什么叫做无状态协议呢?
举个例子:
我们登录了一个网站 www.fsllala.top;
登录的时候我们需要输入用户名和密码:比如用户名forward,密码:Forward666;
登录成功之后,我们要以forward的身份去访问其他的数据和资源,还是通过http请求去访问。
fsllala的服务器会问:你谁呀?
forward说:我是forward呀,刚刚登录过呀;
fsllala:怎么证明你刚刚登录过呀?
forward说:这。。。,http没有告诉你吗?
fsllala:http的每次请求对我来说都是一个单独的请求,和之前请求过什么没有关系。
看到了吧?这就是http的无状态,也就是服务器不知道你上一步做了什么,我们必须得有一个办法可以证明我们登录过;
那如何证明刚才就是我登录的啊?
登陆成功的时候服务器给我们发过来一个登录凭证,访问其 ...
NodeJs连接MySQL
NodeJs连接MySQLmysql与mysql2
如何可以在Node的代码中执行SQL语句呢?这里我们可以借助于两个库:
mysql:最早的Node连接MySQL的数据库驱动;
mysql2:在mysql的基础之上,进行了很多的优化、改进;
目前相对来说,更偏向于使用mysql2,mysql2兼容mysql的API,并且提供了一些附加功能;
更快/更好的性能;
Prepared Statement (预编译语句):
提高性能:将创建的语句模块发送给MySQL,然后MySQL编译(解析、优化、转换)语句模块,并且存储它但是不执行,之 后我们在真正执行时会给?提供实际的参数才会执行;就算多次执行,也只会编译一次,所以性能是更高的;
防止SQL注入:之后传入的值不会像模块引擎那样就编译,那么一些SQL注入的内容不会被执行;or 1 = 1不会被执行;
支持Promise,所以我们可以使用async和await语法;
mysql2的使用
安装mysql2:
12npm init -ynpm install mysql2
mysql2的使用过程如下:
第 ...
NodeJs Koa2
Koa2简介
官网
koa2是express同一个团队开发的一个新的Web框架;
相对于express具有更强的异步处理能力;**(Koa框架的next()函数返回的是一个promise)**
Koa2的核心代码只有1600+行,是一个更加轻量级的框架,我们可以根据需要安装和使用中间件;
使用
node下载koa模块
命令:
初始化服务:npm init -y
下载koa:npm i koa
koa2初体验
PS:我一直以为是koa,然后群友说koa2,我才发现我用的是koa2;
Koa vs Express && Koa1 vs Koa2;什么是KOA2?KOA2和KOA的差别;
koa2并没有像express一样,将req和res分开,而是将它们作为 ctx的属性;
ctx代表依次请求的上下文对象;
ctx.request:获取请求对象;(koa封装的请求对象)
ctx.response:获取响应对象;(koa封装的响应对象)
ctx.req:(Node封装的请求对象)
ctx.res:(Node封装的响应对象)
1234567891011121314 ...
NodeJs Express
Express简介
Express 是一个简洁而灵活的 Node.js Web应用框架, 提供一系列强大特性帮助你创建各种Web应用
Express内部还是使用的http模块实现服务器创建和监听, 对http模块进行了二次封装
严格上来说 express就是NodeJS的一个模块 直接下载安装
中文官网express中文官网
使用
node下载express模块:
命令 :
初始化服务 : npm init -y
下载express: npm i express
使用的时候 引入 需要实例化一个express应用 使用应用对象创建各种服务
express初体验12345678910111213141516171819const express = require("express");// express其实是一个函数;// 调用函数返回 app,app本质也是一个函数;const app =express();// 监听默认路径(GET)app.get("/",(req,res,next)=>{ ...