自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(59)
  • 收藏
  • 关注

原创 axios请求头添加token

axios请求头添加token

2022-10-14 10:20:13 2316 1

原创 hutool导入导出excel

hutool使用

2022-10-12 17:14:03 267

原创 ctf-crypto1

前言一次巧合的情况下点开了一个ctf比赛 一直没玩过ctf 第一次 0基础分析 签到题crypto的题目:#!/usr/bin/env python# -*- coding: utf-8 -*-from Crypto.Util.number import *import randomflag=b'flag{******************}'n = 2 ** 256flaglong=bytes_to_long(flag)m = random.randint(2, n-1) | 1

2021-09-26 23:10:50 2036

原创 SQL注入之access联合查询

access联合查询常见数据库搭配上面几种搭配都是可以混搭的access数据库结构access数据库的结构: 表名---->列名---->内容数据 他不像其他的数据库一样、里面创建多个数据库然后才是表再是内容、而access的话只有一个库若干张表。测试SQL注入access注入基本流程:1.判断有无注入2.猜解表名3.猜解字段4.猜解管理员ID值5.猜解用户名和密码长度6.猜解用户名和密码判断注入and 1=1 and 1=2 ——判断注入 显示正常说明这

2021-04-17 10:09:28 621

原创 app信息收集和waf识别

wafWeb应用防护系统(也称为:网站应用级入侵防御系统。英文:Web Application Firewall,简称: WAF)。利用国际上公认的一种说法:Web应用防火墙是通过执行一系列针对HTTP/HTTPS的安全策略来专门为Web应用提供保护的一款产品WAF与网络防火墙的区别网络防火墙作为访问控制设备,主要工作在OSI模型三、四层,基于IP报文进行检测。只是对端口做限制,对TCP协议做封堵。其产品设计无需理解HTTP会话,也就决定了无法理解Web应用程序语言如HTML、SQL语言。因此,它不可

2021-04-14 11:40:32 629

原创 CDN绕过方法

CDN有什么作用?CDN基本思路就是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。CDN核心的就是使用户可就近访问网络,取得所需内容,解决网络拥挤的状况,明显提高用户访问网站的响应速度或者用户下载速度。CDN对网站有什么好处?首先,开启CDN后的网站

2021-04-10 12:20:13 952

原创 全局配置app.json的认识

全局配置app.json{ "pages":[ "pages/index/index", "pages/logs/logs" ], "window":{ "backgroundTextStyle":"light", "navigationBarBackgroundColor": "#fff", "navigationBarTitleText": "Weixin", "navigationBarTextStyle":"black" },

2021-03-16 21:28:52 119

原创 NodeJS组成原理

NodeJS组成原理初步了解nodejs组成原理蓝色部分基本上都是js代码1. 用户代码JS代码,开发者编写的2. 第三方库大部分仍然是JS代码,由其他开发者编写3. 本地模块代码JS代码4. V8引擎c/c++代码,作用:把JS代码解释成为机器码可以通过v8引擎的某种机制,扩展其功能V8引擎的扩展和对扩展的编译,是通过一个工具:gyp工具某些第三方库需要使用node-gyp工具进行构建,因此需要先安装node-gyp...

2021-03-15 22:13:37 342

原创 XSS攻击和防御

XSS攻击和防御XSS:Cross Site Scripting 跨站脚本攻击存储型XSS恶意用户提交了恶意内容到服务器服务器没有识别,保存了恶意内容到数据库正常用户访问服务器服务器在不知情的情况下,给予了之前的恶意内容,让正常用户遭到攻击反射型恶意用户分享了一个正常网站的链接,链接中带有恶意内容正常用户点击了该链接服务器在不知情的情况,把链接的恶意内容读取了出来,放进了页面中,让正常用户遭到攻击DOM型恶意用户通过任何方式,向服务器中注入了一些dom元素,

2021-03-15 22:07:29 253 1

原创 CSRF攻击和防御

CSRF 特点和原理CSRF:Cross Site Request Forgery,跨站请求伪造本质是:恶意网站把正常用户作为媒介,通过模拟正常用户的操作,攻击其登录过的站点。它的原理如下:用户访问正常站点,登录后,获取到了正常站点的令牌,以cookie的形式保存用户访问恶意站点,恶意站点通过某种形式去请求了正常站点(请求伪造),迫使正常用户把令牌传递到正常站点,完成攻击防御cookie的SameSite现在很多浏览器都支持禁止跨域附带的cookie,只需要把cookie设置的

2021-03-15 21:56:19 336

原创 socket.io

socket客户端连接服务器(TCP / IP),三次握手,建立了连接通道客户端和服务器通过socket接口发送消息和接收消息,任何一端在任何时候,都可以向另一端发送任何消息有一端断开了,通道销毁http客户端连接服务器(TCP / IP),三次握手,建立了连接通道客户端发送一个http格式的消息(消息头 消息体),服务器响应http格式的消息(消息头 消息体)客户端或服务器断开,通道销毁实时性的问题:轮询长连接websocket专门用于解决实时传输的问题客户端连接服

2021-03-14 21:10:51 643

原创 jwt

jwtjwt 也相当于一个令牌一样的东西 可以和cookie一样 可以用来进行登录和认证但是jwt相对于更完善一点 统一规划了不同客户端 浏览器 手机等等jwt提供了一套统一的规范 不管使用什么终端设备 都用一套规范随着前后端分离的发展,以及数据中心的建立,越来越多的公司会创建一个中心服务器,服务于各种产品线。而这些产品线上的产品,它们可能有着各种终端设备,包括但不仅限于浏览器、桌面应用、移动端应用、平板应用、甚至智能家居实际上,不同的产品线通常有自己的服务器,产品内部的数

2021-03-07 22:23:46 107

原创 session

sessionsession文档https://github.com/expressjs/sessionsession 是用来可以进行登录认证的 和cookie jwt 一样不存在谁取代谁 各有个 的好处session是存储在服务器的而cookie是存储在客户端的进行简单的session测试在在node里面 有一个session中间件 只需要简单的配置 就可以使用sessionsession安装npm i express-sessionsecret 相当于一种你要加密的秘

2021-03-07 11:58:42 84

原创 CORS中间件

CORS中间件CORS中间件文档https://github.com/expressjs/cors#readmenpm i cors使用cors中间件能直接解决简单请求的跨域处理预检的请求fetch("http://localhost:5008/api/student", { method: "POST", headers: { "content-type": "application/json", a: 1, }, credentials: "includ

2021-03-06 11:26:19 1099

原创 跨域之CORS

阅读本文,你需要首先知道:浏览器的同源策略跨域问题JSONP原理cookie原理JSONP并不是一个好的跨域解决方案,它至少有着下面两个严重问题:会打乱服务器的消息格式:JSONP要求服务器响应一段JS代码,但在非跨域的情况下,服务器又需要响应一个正常的JSON格式只能完成GET请求:JSONP的原理会要求浏览器端生成一个script元素,而script元素发出的请求只能是get请求所以,CORS是一种更好的跨域解决方案。概述CORS是基于http1.1的一种跨域解决方案,它.

2021-03-06 11:10:18 241

原创 跨域之JSONP

同源策略在协议,端口,主机名完全相同的情况下 访问才不会出现跨域请求在出现跨域的情况之后可以用多种办法解决JSONP就是其中一直利用JSONP解决跨域 实际上是利用script标签 来请求资源 这样能够解决跨域 但尽管这样能够解决 但是还是需要服务端进行相应的配置 才能拿到数据页面上也需要进行相应的配置服务端返回的callback在页面的js代码里面需要提前创建这样一个名字的函数JSONP缺陷如果没有跨域的话 服务端就需要 另外重新配置返回的数据格式 这样就会很麻烦而且JSO

2021-03-06 10:30:01 78

原创 断点调试

node进行断点调试需要用到node里面的 node --inspect 启动模块在package里面配置一下启动服务然后启动服务打开页面的控制台就会多一个东西,这个东西就相当于是node的控制台然后点击source 里面 就能看到我们当前程序运行所运行的相关代码文件可以在里面 打断点进行相应的调试除了用浏览器调试 还可以用vscode自带的调试工具这样配置之后也可以进行断点调试...

2021-03-06 10:14:40 94

原创 实现简单的登录和认证

登录分发cookie利用cookie-parser 中间件安装npm i cookie-parser简单的使用cookie-parser加入cookie-parser 中间件加入之后,会在req对象中注入cookies属性,用于获取所有请求传递过来的cookie加入之后,会在res对象中注入cookie方法,用于设置cookieconst cookieParser = require("cookie-parser");app.use(cookieParser());路由配置ro

2021-03-04 23:03:52 250 1

原创 cookie的基本概念

一个不大不小的问题假设服务器有一个接口,通过请求这个接口,可以添加一个管理员但是,不是任何人都有权力做这种操作的那么服务器如何知道请求接口的人是有权力的呢?答案是:只有登录过的管理员才能做这种操作可问题是,客户端和服务器的传输使用的是http协议,http协议是无状态的,什么叫无状态,就是服务器不知道这一次请求的人,跟之前登录请求成功的人是不是同一个人由于http协议的无状态,服务器忘记了之前的所有请求,它无法确定这一次请求的客户端,就是之前登录成功的那个客户端。你可以把服务器想象成有着

2021-03-04 18:04:57 603 1

原创 express路由

在 Express 中,路由指的是客户端的请求与服务器处理函数之间的映射关系。Express 中的路由分 3 部分组成,分别是请求的类型、请求的 URL 地址、处理函数express.router()路由本身也是一个中间件一般用来处理通过use中间件 所匹配的基地址比如处理student管理所有请求基地址为/api/student 都会交给studentRouter 这个路由来执行后续的处理然后就可以把studentRouter 单独拧出来配置...

2021-03-04 12:10:25 212 1

原创 常用中间件

express.static()静态资源中间件这个中间件就是专门用来控制静态资源的使用const staticRoot = path.resolve(__dirname, “…/public”);app.use(express.static(staticRoot)) 传入静态资源路径上面面这段代码的作用:当请求时,会根据请求路径(req.path),从指定的目录中寻找是否存在该文件,如果存在,直接响应文件内容,而不再移交给后续的中间件如果不存在文件,则直接移交给后续的中间件处理默认情况下

2021-03-03 21:29:02 231 1

原创 express中间件

Express中间件Express 是一个自身功能极简,完全是由路由和中间件构成一个的 web 开发框架,从本质上来说,一个 Express 应用就是在调用各种中间件。中间件(Middleware) 是一个函数,它可以访问请求对象(request object (req)), 响应对象(response object (res)), 和 web 应用中处于请求-响应循环流程中的中间件,一般被命名为 next 的变量。中间件可以是很多个处理函数const express = require("exp

2021-03-02 22:39:39 84

原创 nodemon

npm i -D nodemon

2021-03-02 21:58:06 286

原创 express的基本使用

express中文网https://www.expressjs.com.cn/express是Node.js的核心框架express可以快速构建web服务器 / api服务器express的安装express的基本使用const express = require('express')const http = require('http')const app = express(); //创建一个express应用 //app实际上是一个函数 用于处理请求的函数const server

2021-03-02 21:39:35 268

原创 数据验证validate.js

引入和安装参考链接http://validatejs.org/npm/node.js$ npm install --save validate.jsvar validate = require(“validate.js”);因为validate.js是用于验证某个对象的树形是否满足某些规则所以进行rule规则配置presence 配置是否可以空值type 配置数据的类型length 配置数据的长度fromat 可以进行格式的配置 可以用正则numericality 可以进

2021-03-01 21:30:21 533 1

原创 node 日志记录

node通过log4js这个模块往数据库中进行日志的记录建立一个简单的日志记录需要先引入log4js然后在进行log4js的相关配置可以参考链接配置使用https://log4js-node.github.io/log4js-node/或者参考链接配置使用https://www.npmjs.com/package/log4jsconst log4js = require("log4js");const path = require("path");log4js.configure({ a

2021-03-01 21:05:57 566

原创 算法 day5-简单快速排序

1、先从数列中取出一个数作为基准数2、分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边3、再对左右区间重复第二步,直到各区间只有一个数var arr = [4,1,6,9,3,2,8,7];function quickSort(arr) { if (arr == null || arr.length == 0) return []; //选班长 var leader = arr[0]; //小的站左边,大的站右边 var.

2021-01-29 16:32:03 65

原创 算法 day5- 选择排序

选择排序选择排序是一种简单直观的排序算法,它的工作原理是每一次从待排序的数据元素中选出最小(最大)的一个元素,存放在序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到全部待排序的数据元素排完。选择排序是不稳定的排序方法。var arr = [4, 1, 6, 9, 3, 2, 8, 7];function compare(a, b) { if (a < b) return true; else return false;

2021-01-29 16:09:37 80

原创 算法 day5-冒泡排序

冒泡排序是通过两两比较 和进行交换 进行排序的正是因为这种排序算法的每一个元素都可以像小气泡一样,根据自身大小,一点一点向着数组的一侧移动。//排序不是比较大小。//排序的本质是比较和交换。这里是引用到最后所有元素都是有序的了,这就是冒泡排序的整体思路。var arr = [4,1,6,9,3,2,8,7];function compare(a, b) {//比较之后需要得出是否需要交换 if (a > b) return true; else return fa

2021-01-29 15:58:31 88

原创 算法 day4-链表的逆置

链表的逆置这样一个链表我们想要将它逆置 相当于箭头换一个方向通过递归的方式来进行逆置function nizhi(root){ if(root.next.next == null){ //代表当前节点是倒数第二个节点 root.next.next = root; //让最后一个节点的next指向自己(倒数第二个) return root.next }else{ v

2021-01-28 23:38:23 148

原创 算法 day3-线性数据结构的递归遍历

数组递归遍历 var arr = [1,2,3,4,5,6,7,8] //递归遍历数组 function bianArr(arr,i){ //第一个参数是需要遍历的数组 //第二个参数的从哪一位开始遍历 if(arr == null || arr.length <= i) return; console.log(arr[i]); bianArr(arr,i+1) }

2021-01-27 23:00:57 79

原创 算法 day2-线性数据结构的遍历

数组的遍历var arr = [1,2,3,4,5,6,7,8]function bianArr(arr){ if(arr == null) return; 算法题必须加上 否则报错什么都不算 for(var i = 0;i<arr.length;i++){ console.log(arr[i]); } } bianArr(arr)链表的遍历 function Node(valu

2021-01-26 23:49:48 86

原创 Node day1-全局对象

1.setTimeout,setInterval,setImmediate3者的用法和在js中一样setImmediate就相当于setTimeout(()=>{},0)2.__dirname获取当前模块所在的目录__dirname不是global的属性3.__filename获取当前模块的文件路径也不是global的属性process4.cwd() 返回当前node进程的工作目录node进程在哪一个目录下进行的就返回哪个5.exit()强制退出当前node进程.

2021-01-25 23:27:20 56

原创 算法day1-线性数据结构之链表

链表链表的创建function Node(value){ this.value = value this.next = null } var a = new Node(1) var b = new Node(2) var c = new Node(3) var d = new Node(4) a.next = b b.next = c

2021-01-25 22:48:06 146

原创 JSONP原理

jsonp原理 //因为我想从一个接口获取一个数据 //但是这个接口和当前页面不是同源的(也就是跨域了) //但是这个接口是支持JSONP的 //script标签,有src属性,所以可以发出网络请求 //script标签,虽然可以引用其他域的资源,浏览器不限制 // 但是,浏览器会将返回的内容,作为js代码执行 //例如asd({"status":"ok","msg":"Hello There is du

2021-01-23 23:00:09 92

原创 MySQL day12

函数含义:一组预先编译好的sql语句的集合,理解成批处理语句1、提高代码的重要性2、简化操作3、减少了编译次数并且减少了和数据库服务器的连接次数,提高了效率区别:存储过程:可以有0个返回,也可以有多个返回,适合做批量插入、批量更新函数:有且仅有1个返回,适合做处理数据后返回一个结果#一、创建语法create function 函数名(参数列表) returns 返回类型begin 函数体end注意:1.参数列表 包含两部分:参数名 参数类型2.函数

2020-10-13 20:51:22 148

原创 MySQL day11

五、视图的更新#具备以下特点的视图不允许更新#1.包含以下关键字的sql语句:分组函数、distinct、group by、having、union、或者union all常量视图select中包含子查询join可以更新 不能插入from一个不能更新的视图where子句的子查询引用了from子句中的表视图和表的对比变量系统变量:全局变量会话变量自定义变量:用户变量局部变量#一、系统变量注意:如果是全局级别,则需要加global,如果是会话级别,则

2020-10-13 09:15:16 157

原创 MySQL day10

标识列又称为自增长列含义:可以不用手动的插入值,系统提供默认的序列值特点:1.标识列必须和一个key搭配2.一个表中可以有一个标识列3.标识列的类型只能是数值型4.通过set auto_increment_increment = x 设置步长可以通过手动插入值,设置起始值#一、创建表时设置标识列#二、修改表时设置标识列#三、修改表时删除标识列TCLTransaction Control Language 事务控制语言事务:一个或一组sql语句组成一个执行单元,这个执行

2020-10-10 23:23:55 1685

原创 MySQL day9

DDL数据定义语言库和表的管理一、库的 管理创建、修改、删除二、表的管理创建、修改、删除创建:create修改:alter删除:drop#一、库的管理#1、库的创建语法:create database [if not exists] 库名;#2、库的修改rename database 库名 to 新库名#更改库的字符集alter database 库名 character set 字符集#3、库的删除drop database if exists 库名#

2020-10-07 22:41:33 138

原创 MySQL day8

练习分页查询应用场景:当要显示的数据,一页显示不全,需要分页提交sql请求语法:select 查询列表from 表[join type join 表2on 连接条件where 筛选条件group by 分组字段having 分组后的筛选order by 排序的字段]limit offset , size;(起始索引) 个数 offset 要显示条目的起始索引(起始索引从0开始) size 要显示的条目个数特点:1.limit语句放在查询语句的

2020-10-07 10:49:10 119 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除