Spring Boot 学习笔记 01
Spring Boot学习笔记 01这是暑期学习第二天,从今天起我开始学习关于SpringBoot的框架,并将学习的内容写到博客上,供大家一起学习!
0x01 Spring Boot简介 Spring Boot是Spring家族中的一个全新的框架,它用来简化Spring应用程序的创建和开发过程,也可以说Spring Boot能简化我们之前采用(SSM)Spring+SpringMVC+Mybatis框架进行开发的过程。
在以往我们采用SSM框架进行开发的时候,搭建和整合三大框架,我们需要做很多工作,比如配置web.xml,配置Spring,配置mybatis,并将他们整合在一起,而SpringBoot框架对此开发过程进行了革命性的颠覆,完全抛弃了繁琐的xml配置过程,采用了大量的默认配置简化我们的开发过程。
所以采用SpringBoot可以非常容易和快速地创建基于Spring框架的应用程序,它让编码变简单了,配置变简单了,部署变简单了,监控变简单了。正因为Spring Boot化繁为简,让开发变得极其简单和快速,所以在业界变得备受关注。
0x02 Spring Boot的特性
能够快速创建基于Spring的应用程序
能够直接使用Java Main方法启动内嵌的Tomcat 服务器运行Spring Boot程序,不需要部署War包文件
提供约定的start ...
Base64的隐写
Base64的隐写0x01 隐写原理填充两个’=’隐写四位信息,填充一个’=’隐写两位信息,将编码按照base64对照表还原,然后每8位转成字符即可.
0x02 隐写脚本通过读取源文件source.txt文件把需要隐写的内容隐写进去并保存到stego.txt中。相应加密脚本enStego.py:
1234567891011121314151617181920212223import base64import sysdef enStego(sourceFile,setgoFile,message): b64table = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" with open(sourceFile,'r') as sourceText, open(setgoFile,'w') as setgoText: print(message) message = "".join([bin(ord(i))[2:].zfill(8) for i in message]) for line in sourceText: text ...
OWASP Top10 及常见预防方法
1. 注入攻击一个 注入攻击 是指恶意代码的输入攻击者到应用程序迫使其执行命令妥协数据或整个应用程序。最常见的注入攻击类型是 SQL 注入和跨站点脚本 (XSS) 攻击,但也有代码注入、命令注入、CCS 注入等。
SQL 注入 是指利用由于用户输入中缺少元字符屏蔽或验证而导致的 SQL 数据库漏洞。
攻击者试图通过有权访问数据库的应用程序注入他自己的数据库命令。但是,由于请求未正确验证,插入的代码更改了原始 SQL 命令,因此更改了有利于攻击者的结果。
攻击成功后,攻击者可以窥探、修改或完全删除数据,并控制服务器。为此,攻击者有不同的方法来破坏系统。例如,可以通过响应时间或错误消息找到进入系统的途径。
1.1 SQL注入攻击的防范避免注入缺陷的主要方法是将数据库中的数据与命令和查询分开,即将其与 Web 应用程序逻辑分开。这可以通过几种不同的方式实现,包括:
使用无需使用解释器或使用参数化查询的安全 API
引入积极的服务器端输入验证(白名单)
如果应用程序中需要特殊字符,则应尽可能通过特定解释器的转义语法避免使用这些字符
在查询中使用数据库控件,例如 LIMIT SQL 子句,以最大限度地减少注入成功时暴露的数据量
2. 破解认证与身份验证和会话管理相关的应用程序功能 经常被错误地实现,允许攻击者破坏密码、密钥或会话令牌或利用其他实现缺陷来临时或永久地假设用户的身份。 ...
Linux设置安全访问控制策略
Linux添加访问控制策略
ubuntu系统默认已安装ufw。
Linux 2.4内核以后提供了一个非常优秀的防火墙工具:netfilter/iptables,他免费且功能强大,可以对流入、流出的信息进行细化控制,它可以 实现防火墙、NAT(网络地址翻译)和数据包的分割等功能。netfilter工作在内核内部,而iptables则是让用户定义规则集的表结构。
但是iptables的规则稍微有些“复杂”,因此ubuntu提供了ufw这个设定工具,以简化iptables的某些设定,其后台仍然是 iptables。ufw 即uncomplicated firewall的简称,一些复杂的设定还是要去iptables。
ufw相关的文件和文件夹有:
/etc /ufw/:里面是一些ufw的环境设定文件,如 before.rules、after.rules、sysctl.conf、ufw.conf,及 for ip6 的 before6.rule 及 after6.rules。这些文件一般按照默认的设置进行就ok。若开启ufw之 后,__/etc/ufw/sysctl.conf__会覆盖默认的__/etc/sysctl.conf__文件,若你原来的/etc/sysctl.conf ...
BUUoj 之 RSA
BUUOJ rsa0x01 题目
0x02 RSA非对称加密算法公钥与私钥的产生 :
随机选择两个不同大质数 p 和 q,计算 N=p×q
根据欧拉函数,求得 φ(N)=φ(p)φ(q)=(p−1)(q−1)
选择一个小于 φ(N) 的整数 e,使 e 和 φ(N) 互质。并求得 e 关于 φ(N) 的模反元素,命名为 d,有 ed≡1(modφ(N))
将 p 和 q的记录销毁
此时,(N,e)是公钥,(N,d) 是私钥。
0x0201 消息加密首先需要将消息 以一个双方约定好的格式转化为一个小于 N,且与 N 互质的整数 m。如果消息太长,可以将消息分为几段,这也就是我们所说的块加密,后对于每一部分利用如下公式加密:
m^e≡c(modN)
0x0202 消息解密利用密钥 d 进行解密。
c^d≡m(modN)
0x03 解密脚本:123456789Python 3.10.2 (main, Feb 2 2022, 05:51:25) [Clang 13.0.0 (clang-1300.0.29.3)] on darwinType "help", "copyright", "credits" or "license" for more information.>>> from ...
课堂Linux实验4
(1)查看本机IP地址。
本机IP地址为:10.211.55.10
(2)测试Apache软件是否安装成功。
通过systemctl status apache2 查看apache运行情况,安装完成
(3) 将Apache的怔听端口改为8080。
1.进入apache的配置文件目录:/etc/apache2/,在ports.conf 文件中修改侦听端口为8080:
重启apache,命令:systemctl reload apache2,在浏览器输入10.211.55.10:8080访问页面
修改端口8080成功。
(4) 将文档根目录设置为/web, 默认首页文件使用default.htm,内容为”Welcome to $USERNAME’s world.” 。
新建目录/web:sudo mkdir /web
设置目录所有者: sudo chown -R www-data: /web
进入apache配置目录:cd /etc/apache2/,修改apache.conf中的:改为:
进入site-available文件夹下,将默认文件000-default.conf 删除或改名为000-default.conf.bak,然后新建文件:touch web.conf
编辑web.conf文件内容如下:vim web.conf
6.在默认目录 ...
课堂Linux实验3
文件和目录的访问权限关系到整个Linux操作系统的安全性,作为一个合格的Linux 操作系统管理员,必须深刻理解Linux文件权限的基本概念并能够熟练地进行权限设置,同时对用户和组群进行熟练操作管理。
(1) 建立用户user01、user02, 设置用户密码。
(2) 将新建用户user01 、user02 分别加入stu01 、stu02 组群中。
(3) 使用 su 命令进行用户登录切换,切换到root用户。
(4) 在的/tmp目录下创建文件test01.txt 和目录test-dir ,并将其所有者和属组分别设置为user01和stu01 。
(5) 将文件test01.txt的权限修改为以下两种。对于每种权限,分别切换到user01和user02用户,验证这两个用户能否对test01.txt进行读取、写入、重命名和删除操作。
① -rwxrw-rw-(766)
user01:
写
读
重命名
删除
user02:
写
读
重命名
删除
② -rwxr–r–(744)
user01:
写
读
重命名
删除
user02:
写
读
重命名
删除
(6) 将目录test-dir的权限修改为以下两种。对于每种权限,分别切换到user01和user02用户,验证这两个用户能否进入目录test-dir,并在目录test-d ...
课堂Linux实验2
Shell脚本代码:
【运行截图】:
A: 创建子目录并复制文件(在/tmp下创建子目录t,并将/proc/cpuinfo文件拷贝进去)
B: 文件权限测试(测试对/proc/cpuinfo是否有r、w、x的权限,分别输出测试结果)
C: 文件字符转换(将/proc/cpuinfo文件中的小写字符转换为大写并输出)
D: 子目录总数统计(统计自己主目录下字目录的数量并输出)
E: 文本文件行数统计(统计/proc/cpuinfo文件中空行的行数并输出)
Q: 退出系统
【实验小结】:
1.在bash脚本文件中可以通过echo来输出,其中被反引号包括的指令可以输出指令的结果。
2.通过echo函数的-e参数可以让echo****识别输出内容中的转义字符。
3.通过while循环加上read case可以实现菜单功能。
4.使用$(date+%Y年%m月%d日)可以实现DATE变量的格式化输出。
5.通过if test -r/w/x file可以测试文件的 读/写/执行 权限。
6.通过对输出内容使用tr a-z A-Z指令可以将内容中的小写全部转换为大写字母。
7.通过“^d”可以匹配每行首字母为d的行,从而利用ls ...
Nmap-渗透端口扫描工具的使用教程
Nmap-渗透端口扫描工具Nmap是一款网络扫描和主机检测的非常有用的工具。Nmap是不局限于仅仅收集信息和枚举,同时可以用来作为一个漏洞探测器或安全扫描器。它可以适用于winodws,linux,mac等操作系统。Nmap是一款非常强大的实用工具,可用于:
检测活在网络上的主机(主机发现)
检测主机上开放的端口(端口发现或枚举)
检测到相应的端口(服务发现)的软件和版本
检测操作系统,硬件地址,以及软件版本
检测脆弱性的漏洞(Nmap的脚本)
map是一个非常普遍的工具,它有命令行界面和图形用户界面。这里主要介绍包括以下方面的内容:
介绍Nmap
扫描中的重要参数
操作系统检测
Nmap使用不同的技术来执行扫描,包括:TCP的connect()扫描,TCP反向的ident扫描,FTP反弹扫描等。所有这些扫描的类型有自己的优点和缺点,我们接下来将讨论这些问题。
用法举例:Nmap的使用取决于目标主机,因为有一个简单的(基本)扫描和预先扫描之间的差异。我们需要使用一些先进的技术来绕过防火墙和入侵检测/防御系统,以获得正确的结果。下面是一些基本的命令和它们的用法的例子: 扫描单一的一个主机,命令如下:
1234567891011121314151617181920nmap nxadmin.comnmap 192.168.1.2 #扫描整个子网,命令如下:nmap ...
php学习笔记 01
php学习笔记 01
小知识:PHP是世界上最好的语言这句话是怎么来的?PHP是世界上最好的语言这句话,最早出现在2001年7月的PHP官方文档中原因很明确,只是说PHP是web开发中的最好的语言,但经过流传之后就变成了PHP是世界上最好的语言了
0x01 php的输出php的输出有以下几个语句:
echo()
print()
print_r()
var_dunp()
0x0101 echo() :可以一次输出多个值,多个值之间用逗号分隔。但是echo()是语言结构(language construct),并__不是真正的函数__,因此不能作为表达式的一部分来使用。echo()是php的内部指令,不是函数,且__无返回值__。
0x0102 print():函数print()打印一个值(它的参数),如果字符串成功显示则返回true,否则返回false。只能打印出简单类型变量的值(如int、string),__有返回值__。
0x0103 print_r()和var_dump():print_r()可以把字符串和数字简单地打印出来,而数组则以括起来的键和值得列表形式显示,并以Array开头。但print_r()输出布尔值和NULL的结果没有意义,因为都是打印”\n”。因此用var_dump()函数更适合调试。print_r是函数,可以打印出比较复杂的变量(如数组、对象),有返回 ...
php超文本预处理器
PHP超文本预处理器0x01 PHP 变量与代数类似,可以给 PHP 变量赋予某个值(x=5)或者表达式(z=x+y)。
变量可以是很短的名称(如 x 和 y)或者更具描述性的名称(如 age、carname、totalvolume)。
PHP 变量规则:
变量以 $ 符号开始,后面跟着变量的名称
变量名必须以字母或者下划线字符开始
变量名只能包含字母数字字符以及下划线(A-z、0-9 和 _ )
变量名不能包含空格
变量名是区分大小写的($y 和 $Y 是两个不同的变量)
0x02 创建(声明)PHP 变量PHP 没有声明变量的命令。
变量在您第一次赋值给它的时候被创建
与Python类似
PHP 是一门弱类型语言
不必向 PHP 声明该变量的数据类型。PHP 会根据变量的值,自动把变量转换为正确的数据类型。在强类型的编程语言中,我们必须在使用变量前先声明(定义)变量的类型和名称。
0x03 PHP 变量作用域变量的作用域是脚本中变量可被引用/使用的部分。
PHP 有四种不同的变量作用域:
local
global
static
parameter
可以在不同函数中使用相同的变量名称,因为这些函数内定义的变量名是局部变量,只作用于该函数内。
0x0301 PHP global 关键字global 关键字用于函数内访问全局变量。
在函数 ...
网络拓扑实验之校园网的构建2
ecjtu-network-ExtraLab6华东交通大学计算机网络 最终实验六:校园网
实验指导书给出的拓扑图:
0x01 :我们根据实验给出的拓扑图在Cisco Packet Tracer中把对应的设备选出并摆放好:如下图:
由于网络结构过于复杂,为了便于读者阅读,我把各区域的拓扑图分开截取:
【教学区】
【宿舍区】
【骨干网络区】
【外网出口】
【DMZ数据机房区】
0x02:配置接口和IP,设置网关:PC1(静态IP主机以此类推,DHCP协议主机例外):
0x0201: 各种二层路由器的配置:
配置交换机接口Vlan并打开接口Switch 0:
1234567Switch>enSwitch#conf tSwitch(config)#int fa0/24Switch(config-if)#switchport access vlan 500% Access VLAN does not exist. Creating vlan 500Switch(config-if)#int fa0/1 Switch(config-if)#switchport access vlan 500
Switch 1:
1234567Switch>enSwitch#conf tSwitch(config)#int fa0/24Switch(config-if)#switchport ...
网络拓扑实验之校园网的构建1
ecjtu-Network-lab6华东交通大学计算机网络实验六 Cisco Packet Tracer V8.0.0
(一)校园网设计示例1(必做内容)
(1)某学院有教职工50人,平均分布在教学楼1和教学楼2,学生400人,平均分布在宿舍楼1和宿舍楼2,有一个数据中心服务器。(2)每栋教学楼和宿舍楼分别设置为不同的VLAN网段,教学楼通过汇聚路由器连接到学院的核心路由器,宿舍楼通过三层交换机连接到学院的核心路由器。数据中心服务器作为一个独立网段连接到核心路由器。(3)学院核心路由器通过serial接口连接到ISP的路由器,从而连接到互联网。(4)采用合适的路由配置策略(静态路由、RIP协议、OSPF协议),使得学院网络内部互联互通。(5)在学院核心路由器上配置合适的NAT,使得宿舍楼1和宿舍楼2所属子网范围能访问外网,而教学楼1和教学楼2所属子网范围不能访问外网。(6)在学院核心路由器上设置标准ACL或扩展ACL,允许教学楼的用户只可以访问数据中心服务器的WWW服务和FTP服务。允许宿舍楼的用户可以访问外网的资源,也能访问教学楼的资源,其余的都不可以访问。
请根据以上需求,给出学院的具体网络设计方案,各楼栋分布与节点数需求,画出网络拓扑结构设计图,给出VLAN 及 所有IP 地址规划,完成设备选型,详细实验配置等。并将以上所有内容记录在实验报告上。
0x01:按照拓扑图添加好 ...
Mysql新建用户及数据库随笔
Mysql 新建用户以及数据库随笔1. 安装好MySQL之后假如是通过yum等包控制器安装等mysql,我们没有设置root的初始密码,我们需要通过查找配置文件来得到root用户的默认密码:
1cat /var/log/mysqld.log |grep password
得到密码:
12021-11-16T09:50:21.808068Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: PcWkrqq,/1r+
2.修改默认密码通过所得默认密码进入root用户mysql:
1mysql -u root -p
然后通过:
1SET PASSWORD = PASSWORD("password");
修改默认密码为 password 。
但是有时候这里报错:ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘PASSWORD(“password”)’ at line 1
或者通过:
12m ...
常见的文件头十六进制格式
常见文件头格式:[ {“扩展名”:123,”文件头标识(HEX)”:”00001A00051004”,”文件描述”:”Lotus1-2-3spreadsheet(v9)file”}, {“扩展名”:”3gg;3gp;3g2”,”文件头标识(HEX)”:”000000nn66747970336770”,”文件描述”:”3rdGenerationPartnershipProject3GPP(nn=0x14)and3GPP2(nn=0x20)multimediafiles”}, {“扩展名”:”7z”,”文件头标识(HEX)”:”377ABCAF271C”,”文件描述”:”7-ZIPcompressedfile”}, {“扩展名”:”aba”,”文件头标识(HEX)”:”00014241”,”文件描述”:”PalmAddressBookArchivefile”}, {“扩展名”:”abi”,”文件头标识(HEX)”:”414F4C494E444558”,”文件描述”:”AOLaddressbookindexfile”}, {“扩展名”:”aby;idx”,”文件头标识(HEX)”:”414F4C4442”,”文件描述”:”AOLdatabasefiles:addressbook(ABY)anduserconfigurationdat ...
Mysql中默认Datatime为0时间报错问题解决
Mysql中默认Datatime为0时间报错运行Sql脚本时报错:
1[Err] 1067 - Invalid default value for 'UPDATE_TIME'
这个问题和mysql中sql_mode有关系,我们可以采用两种方法来查看它的值:
方法1:
1SHOW VARIABLES LIKE 'sql_mode%';
返回:
123456+---------------+------------------------------------------------------------------------------------------+| Variable_name | Value |+---------------+------------------------------------------------------------------------------------------+| sql_mode | ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ ...
MarkDown使用教程
markdown 教程1.Markdown 标题1、使用 = 和 - 标记一级和二级标题= 和 - 标记语法格式如下:
123456我展示的是一级标题=================我展示的是二级标题-----------------
2 、使用 # 号标记
使用 # 号可表示 1-6 级标题,一级标题对应一个 # 号,二级标题对应两个 # 号,以此类推。
123456# 一级标题## 二级标题### 三级标题#### 四级标题##### 五级标题###### 六级标题
2.Markdown 段落Markdown 段落没有特殊的格式,直接编写文字就好,段落的换行是使用两个以上空格加上回车。
3.字体Markdown 可以使用以下几种字体:
123456*斜体文本*_斜体文本_**粗体文本**__粗体文本__***粗斜体文本***___粗斜体文本___
3.分隔线你可以在一行中用三个以上的星号、减号、底线来建立一个分隔线,行内不能有其他东西。你也可以在星号或是减号中间插入空格。下面每种写法都可以建立分隔线:
12345678910**** * ******- - -----------
4.删除线如果段落上的文字要添加删除线,只需要在文字的两端加上两个波浪线~~即可,实例如下:
123RUNOOB.COMGOOGLE.COM~~BAIDU.COM~~
...
IP地址划分常识
IP地址划分常识IP地址的分类:
A类IP地址:1.0.0.0 ~127.0.0.0 255.0.0.0A类网络有127个,每个网络能容纳16777214个主机A:0-127,其中0代表任何地址,127为回环测试地址,因此,A类ip地址的实际范围是1-126.B类IP地址:128.0.0.0~191.255.255.255B类网络有16382个,每个网络能容纳6万多个主机128-191,其中128.0.0.0和191.255.0.0为保留ip,实际范围是128.1.0.0–191.254.0.0C类IP地址:192.0.0.0到223.255.255.255C类网络可达209万余个,每个网络能容纳254个主机其中192.0.0.0和223.255.255.0为保留ip,实际范围是192.0.1.0–223.255.254.0D类IP地址:224.0.0.0~239.255.255.255用于多点广播(Multicast)E类IP地址:240.0.0.0~255.255.255.254为将来使用保留
全零(“0.0.0.0”)地址对应于当前主机。全“1”的IP地址(“255.255.255.255”)是当前子网的广播地址
在IP地址3种主要类型里,各保留了3个区域作为私有地址,其地址范围如下: A类地址:10.0.0.0~10.255.255.255 B类地址:1 ...
Animate动画库
Animate_libraries一个css样式,里面包含了可以直接引用的动画类。
第一次在github上写项目,这是我找到的一个css开源项目animate,这里简单介绍一下这个包的用法。
查看效果预览可以打开:1https://animate.style/
Animate.Style效果预览
我这里用的版本是V4.1.1,如果需要别的版本也可以在里面下载。这边只简单介绍一下使用=w=。
安装你可以直接在这个主页下载animate.css到你的css文件夹并配合<link>使用同样你也可以直接通过下面的代码进行互联网上的获取。
123456<head> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/4.1.1/animate.min.css" /></head>
如何使用简单的通过在标签中加入class=""来调用animate.css中的动漫,至于class=""·的“”`中填什么就从上面的效果预览中获得对应的类名来使用啦。比如这里给图片添加一个抖动的动画:
12345678910< ...
常用UI框架推荐
Common-User-Interface
这里推荐一些常用的UI界面
We UIWeUI
WeUI 是一套同微信原生视觉体验一致的基础样式库,由微信官方设计团队为微信内网页和微信小程序量身设计,令用户的使用感知更加统一。
Element UIElment UI
element-ui是一个ui库,它不依赖于vue。但是却是当前和vue配合做项目开发的一个比较好的ui框架。