Linux —— FTP服务【从0-1】

目录

一、介绍

1.概述

2.FTP的传输模式

PORT 主动模式

PASV 被动模式

3.FTP服务的作用

二、搭建FTP服务器

FTP服务端配置

1.安装vsftpd文件服务

2.启动服务

3.防火墙配置

4.FTP服务相关文件说明

FTP客户端配置

1.安装FTP客户端工具 lftp

2.访问FTP服务器

Linux系统访问FTP服务器

Windows系统访问FTP服务器

三、FTP服务配置文件

1.配置匿名用户

(1)修改配置文件

(2)创建上传目录

(3)客户端进行文件上传

(4)客户端进行目录上传

2.配置系统用户

(1)创建FTP服务专用用户

(2)将用户禁锢在自己的家目录 chroot_local_user=YES

(3)允许指定系统用户可以切换目录 

(4)白名单

(5)黑名单 /etc/vsftpd/ftpusers

3.配置虚拟用户

(1)建立FTP虚拟用户的用户数据库文件

(3)创建FTP虚拟用户的映射用户

(4)建立支持虚拟用户的PAM认证文件,添加虚拟用户支持

(5)创建虚拟用户的配置文件

(6)客户端进行验证

4.常用的配置指令

5.PASV 被动模式

四、vsftpd加密传输

1.抓取vsftpd传输内容

(1)在同网段主机进行抓包

(2)客户端登录FTP操作

2.openssl+vsftpd加密传输

(1)检查是否安装了 openssl

(2)查看vsftpd是否支持openssl

(3)生成加密信息的私钥、证书、签字证书

3.修改配置文件/etc/vsftpd/vsftpd.conf

4.客户端验证

(1)同网段主机继续抓包

(2)使用第三方客户端进行登录(支持服务器类型:FTP over TLS)

(3)查看抓包信息

        学习是一场马拉松,耐心和坚持是成功的关键。愿你能保持初心,好好学习,天天向上,努力成为最优秀的你。


一、介绍

1.概述

        FTP(File Transfer Protocol,文件传输协议)是TCP/IP协议族中应用层的协议之一。是一种基于TCP的协议,采用客户/服务器模式。通过FTP协议,用户可以在FTP服务器中进行文件的上传或下载等操作。

2.FTP的传输模式

控制端口:控制连接在两主机间传送控制命令,如用户身份、口令、改变目录命令等。

数据端口:数据连接只用于数据传输。

PORT 主动模式

  1. FTP客户端会随机使用一个高位端口Nn > 1024)与FTP服务端21端口进行连接,向服务端发送用户名和密码进行登陆;
  2. 登录成功后要list列表或者读取数据时,客户端开放一个N+1端口(1024以上)进行监听,发送 PORT命令到FTP服务器,告诉服务器客户端采用主动模式并开放端口;
  3. FTP服务器收到PORT主动模式命令和端口号后,通过服务器的20端口和客户端开放的端口(N+1)连接,发送数据;

原理如下图:

PASV 被动模式

  1. FTP客户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,发送用户名和密码进行登陆;
  2. 登录成功后要list列表或者读取数据时,客户端开放一个N+1端口(1024以上)进行监听,然后向服务器发送PASV命令,通知服务器自己处于被动模式。
  3. 服务器收到命令后,会开放一个大于1024的端口P进行监听,然后用PORT P命令通知客户端,自己的数据端口是P
  4. 客户端收到命令后,会通过N+1号端口连接服务器的端口P,然后在两个端口之间进行数据传输。

原理如下图:

3.FTP服务的作用

FTP服务是一种提供共享文件的服务器,它的主要作用有以下几点:

(1)存储文件:FTP服务器可以存储需要传输的文件,用户可以通过FTP客户端连接到FTP服务器,并上传或下载需要的文件。

(2)管理文件:FTP服务器可以管理文件,例如创建、删除、重命名等操作。

(3)提供文件访问权限控制:FTP服务器可以对文件进行访问权限控制,例如限制用户的访问权限、控制用户的上传和下载权限等。

(4)提供匿名访问:FTP服务器可以提供匿名访问,允许用户通过FTP客户端进行匿名的文件传输。

(5)监控文件传输情况:FTP服务器可以记录和监控文件传输情况,例如记录文件传输的日志信息,以便进行后续的审计和管理。

(6)支持多用户同时传输:FTP服务器可以支持多个用户同时进行文件传输,以提高文件传输的效率。

(7)数据备份:FTP服务器可以作为网络备份的存储服务器,用于备份公司或组织的重要数据。

二、搭建FTP服务器

FTP服务端配置

1.安装vsftpd文件服务

[root@localhost ~]# yum install -y vsftpd
已加载插件:fastestmirror
Determining fastest mirrors
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
......省略输出
已安装:
  vsftpd.x86_64 0:3.0.2-29.el7_9                                                                                                                                              

完毕!
[root@localhost ~]# 
[root@localhost ~]# 

2.启动服务

systemctl start vsftpd # 启动服务

systemctl stop vsftpd # 停止服务

systemctl status vsftpd # 查看服务状态

systemctl enable vsftpd # 开启自启动

3.防火墙配置

systemctl stop firewalld # 停止防火墙 
systemctl disable firewalld # 开机不启动防火墙 
setenforce 0 # 关闭selinux

4.FTP服务相关文件说明

FTP客户端配置

1.安装FTP客户端工具 lftp

[root@localhost ~]# yum install -y lftp
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
......省略输出
  正在安装    : lftp-4.4.8-14.el7_9.x86_64                                                                                                                                1/1 
  验证中      : lftp-4.4.8-14.el7_9.x86_64                                                                                                                                1/1 

已安装:
  lftp.x86_64 0:4.4.8-14.el7_9                                                                                                                                                

完毕!
[root@localhost ~]# 

2.访问FTP服务器

Linux系统访问FTP服务器

(1)客户端工具 lftp

lftp 服务端IP地址

(2)wget 工具

wget ftp://服务器IP/文件名 # 下载文件 wget -m ftp://服务器IP/目录名 # 下载目录

Windows系统访问FTP服务器

(1)浏览器访问

(2)资源管理器访问

三、FTP服务配置文件

1.配置匿名用户

登录账号:ftpanonymous

登录密码:

工作目录:/var/ftp

默认权限:允许下载,不允许上传。

(1)修改配置文件

# 修改配置文件之前先进行备份 
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak

vim /etc/vsftpd/vsftpd.conf

# 是否允许匿名用户访问
anonymous_enable=YES
# 允许上传文件
anon_upload_enable=YES
# 允许创建目录
anon_mkdir_write_enable=YES
# 允许用户进行其它操作(删除文件、覆盖文件、重命名文件)
anon_other_write_enable=YES
# 匿名用户所上传文件的权限掩码
anon_umask=022
# 限制最大传输速率 单位:bytes/秒(0为不限速)
anon_max_rate=0

每次修改完配置文件后都需要重启服务

systemctl restart vsftpd # 重启服务

(2)创建上传目录

mkdir /var/ftp/upload # 创建上传目录 
chmod 777 /var/ftp/upload/ # 赋予权限

(3)客户端进行文件上传

(4)客户端进行目录上传

2.配置系统用户

登录账号:/etc/passwd文件的系统用户

登录密码:/etc/shadow文件的用户密码

工作目录:用户家目录

默认权限:drwx — —

将原有内容删除,复制以下内容

# 允许使用系统用户
local_enable=YES
# 系统用户上传的文件的默认权限
local_umask=022
# 禁锢系统用户在自己的家目录
chroot_local_user=YES
# 允许系统用户目录有写入权限
allow_writeable_chroot=YES
write_enable=YES
# 启用进入目录的欢迎信息
dirmessage_enable=YES
# 启用日志功能
xferlog_enable=YES
# 使用20端口进行数据传输
connect_from_port_20=YES
# 记录日志的格式(上传、下载)
xferlog_std_format=YES
# 使用IPv4
listen=YES
pam_service_name=vsftpd 
# 限制最大传输速率(0为不限制,单位:bytes/秒)
local_max_rate=0
tcp_wrappers=YES

不删除原文,只添加以下内容即可

local_enable=YES # 是否允许本地系统用户访问 local_umask=022 #本地用户所上传文件的权限掩码 Chroot_local_user=YES # 禁锢用户在自己家目录 allow_writeable_chroot=YES # 允许系统用户目录有写入权限 local_max_rate=0 # 限制最大传输建率(字节/秒) 0为无限制

(1)创建FTP服务专用用户

-s创建的用户不能登录系统

# 创建两个不能登录系统的用户

useradd -s /sbin/nologin user01 useradd -s /sbin/nologin user02

# 设置密码

passwd user01 passwd user02

(2)将用户禁锢在自己的家目录 chroot_local_user=YES

在vsftpd配置文件中,默认允许系统用户随意切换目录,这个行为是很危险的,需要禁止。

修改配置文件/etc/vsftpd/vsftpd.conf,添加 chroot_local_user=YES 限制系统用户在自己家目录

# 将系统用户禁锢在自己的家目录

chroot_local_user=YES

配置完将用户禁锢在主目录的指令后,再使用普通用户进行登录会出现以下报错:

原因:

从2.3.5之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下, 则该用户的主目录不能再具有写权限了!如果检查发现还有写权限,就会报错,并禁止登录。

解决办法:

配置文件/etc/vsftpd/vsftpd.conf中,添加 allow_writeable_chroot=YES # 使系统用户目录有写入权限

(3)允许指定系统用户可以切换目录 

# 配置文件中添加以下

# 开启读取chroot列表功能

chroot_list_enable=YES

# 写在/etc/vsftpd/chroot_list文件里面的用户是切换目录的

chroot_list_file=/etc/vsftpd/chroot_list

再创建chroot_list文件

touch /etc/vsftpd/chroot_list         # 创建切换目录白名单

echo 'user02' 1>> /etc/vsftpd/chroot_list         # 添加用户到白名单中,一行一个用户

验证

(4)白名单

userlist_enable=YES&&userlist_deny=NO # 仅允许/etc/vsftpd/user_list文件中的用户登录FTP

userlist_enable=YES&&userlist_deny=YES # 禁止/etc/vsftpd/user_list文件中的用户登录FTP

配置文件中添加

userlist_enable=YES userlist_deny=NO

添加用户进白名单

echo 'user01' 1>> /etc/vsftpd/user_list

验证

(5)黑名单 /etc/vsftpd/ftpusers

添加进此文件中的用户都禁止登录FTP,立即生效,无需重启服务(权限高于白名单

验证

3.配置虚拟用户

(1)建立FTP虚拟用户的用户数据库文件

vim vsftpd.user # 文件名字可随便定义 文件内容格式:奇数行为用户名,偶数行为用户密码 user01

123

user02

123

user03

123

(2)将虚拟用户文件转换为DB数据库格式文件

db_load -T -t hash -f vsftpd.user vsftpd.db

-T:允许应用程序能够将文本文件转译载入进数据库文件;

-t:指定转译成什么数据库类型;

-f:包含用户名和密码的文本文件;

修改数据库文件的权限,保证其安全性

chmod 600 vsftpd.db

(3)创建FTP虚拟用户的映射用户

由于虚拟用户不是系统用户,没有自己的家目录,所以需要创建一个系统用户,用它的家目录给虚拟用户当做工作目录(家目录);

useradd -s /sbin/nologin virtual

(4)建立支持虚拟用户的PAM认证文件,添加虚拟用户支持

cp -a /etc/pam.d/vsftpd /etc/pam.d/vsftpd.pam

编辑复制的文件vsftpd.pam(清空所有内容,复制以下两行)

auth required pam_userdb.so db=/etc/vsftpd/vsftpd

account required pam_userdb.so db=/etc/vsftpd/vsftpd

在vsftpd.conf配置文件中修改、添加以下内容

# 修改

pam_service_name=vsftpd.pam

# 添加

guest_enable=YES         # 允许使用虚拟用户功能

gue_username=virtual         # 指定虚拟用户的映射用户

user_config_dir=/etc/vsftpd/dir         # 虚拟用户配置文件的目录(需要自己创建)

(5)创建虚拟用户的配置文件

创建虚拟用户配置文件的目录

mkdir /etc/vsftpd/dir

创建虚拟用户配置文件(虚拟用户的配置指令与匿名用户的配置指令是相同的

先把主配置文件vsftpd.conf中匿名用户的所有配置指令注释掉

修改虚拟用户配置文件

cd /etc/vsftpd/dir/ vim user01

# 添加以下内容

allow_writeable_chroot=YES         # 允许用户的家目录有写入权限 anon_upload_enable=YES         # 允许用户上传 vim user02 # 添加以下内容 allow_writeable_chroot=YES         # 允许用户的家目录有写入权限 anon_mkdir_write_enable=YES         # 允许用户创建文件 vim user03 allow_writeable_chroot=YES         # 允许用户的家目录有写入权限 anon_upload_enable=YES         # 允许用户上传文件(为了覆盖文件开启的) anon_other_write_enable=YES         # 允许用户进行其它操作(删除、覆盖、重命名文件)

注意:请给映射用户家目录添加 o+r 权限,让虚拟用户拥有读取权限;

(6)客户端进行验证

4.常用的配置指令

listen=YES                                #是否以独立运行的方式监听服务listen_address=192.168.10.112               #设置监听FTP服务的IP地址listen_port=21                                 #设置监听FTP服务的端口号write_enable=YES                        #是否启动写入权限(上传、删除文件)download_enable=YES                   #是否允许下载文件dirmessage_enable=YES                #用户切换目录显示.message文件xferlog_enable=YES                        # 启用日志文件,记录到/var/log/xferlogxferlog_std_format=YES    # 启用标准的xferlog日志格式,禁用此项将使用vsftpd自己的格式connect_from _port_20=YES        # 允许服务器主动模式 (从20端口建立数据连接)pasv_enabTe=YES                        # 允许服务器被动模式
pasv_max_port=24600                   # 设置被动模式服务器的最大端口号
pasv_min_port=24500                        # 设置黄动模式服务的最小端口pam_service_name=vsftpd                # 用户认证的PAM文件userlist_enable=YES                        # 是否启用user_list列表文件
userlist_deny=YES                        # 是否禁用user_list中的用户max_cIients=0                                #限制并发客户端连接数max_per_ip=0                                # 限制同一IP地址的井发连接数
tcp_wrappers=YES                        #是否启用tcp_wrappers主机访问控制chown_username=root                #表示匿名用户上传的文件的拥有人是root,默认关闭ascii_upload_enable=YES           # 表示是否允许用户可以上传一个二进制文件,默认不允许ascii_download_enable=YES        #代表是否允许用户下载个一个二进制文件,默认不允许
nopriv_user=vsftpd                        #设置支撑vsftpd服务的宿主用户为手动建立的vsftpd用户async_abor_enable=YES                # 设定支持异步传输功能
ftpd_banner=welcome to Awei FTP servers          # 设定vsftpd的登录标语
guest_enable=YES                        # 设置启用虚拟用户功能guest_username=ftpuser                 # 指定虚拟用户的宿主用户virtual_use_local_privs=YES                # 设定虚拟用户的权限符合他们的宿主用户user_config_dir=/etc/vsftpd/vconf        # 设定虚拟用户个人vsftp的配置文件存放路径

5.PASV 被动模式

/etc/vsftpd/vsftpd.conf 配置文件中添加以下内容

pasv_enable=YES         # 开启被动模式

pasv_min_port=3000(大于1024)         # 数据连接最小端口

pasv_max_port=5000         # 数据传输最大端口

验证

客户端下载文件,进行数据传输

服务端查看端口

四、vsftpd加密传输

1.抓取vsftpd传输内容

因为vsftpd是明文传输,所以使用抓包工具可以抓取vsftpd传输的内容

使用tcpdump抓包工具

tcpdump -i 网卡名 -nn -X -vv tcp port 21(服务器端口) and ip host 来源ip(客户端VMnet8网卡IP)

-i:指定需要监听的网卡;

-n: 对回显的信息以数字方式显式,例如地址回显为192.168.157.1,否则显式为主机名;

-nn:除了-n的作用外,还把端口显示为数值,否则显示端口服务名;

-X:输出包的头部数据,会以16进制和ASCII两种方式同时输出;

-vv:产生更详细的输出;

(1)在同网段主机进行抓包

(2)客户端登录FTP操作

2.openssl+vsftpd加密传输

(1)检查是否安装了 openssl

rpm -q opessl

(2)查看vsftpd是否支持openssl

ldd命令用于打印程序或者库文件所依赖的共享库列表。

[root@localhost virtual]# which vsftpd /usr/sbin/vsftpd

[root@localhost virtual]#

[root@localhost virtual]#

[root@localhost virtual]# ldd /usr/sbin/vsftpd | grep libssl

libssl.so.10 => /lib64/libssl.so.10 (0x00007ff14cf2d000)

[root@localhost virtual]#

(3)生成加密信息的私钥、证书、签字证书

后缀:

  • .key:服务器私钥;
  • .csr:服务器证书;
  • .crt:签字证书;

请注意:服务器所有私钥、证书和签字证书都是存储在/etc/ssl/certs/

a.生成服务器私钥

openssl genrsa -out vsftpd.key 1024

-genrsa:用于生成私钥;

-out:输出文件;

b.通过私钥生成服务器的证书

openssl req -new -key vsftpd.key -out vsftpd.csr

req:生成证书请求;

-new:新的请求;

-key:用于签名待生成的请求证书的私钥文件;

-out:待输出的文件;

c.生成签字证书

openssl x509 -req -days 365 -sha256 -in vsftpd.csr -signkey vsftpd.key -out vsftpd.crt

-req:签字证书请求;

-days:签字证书生效时间;

-sha256:签字证书加密方式;

-in:输入文件;

-out:输出文件;

d.把/etc/ssl/certs/目录的权限设置为500,这是必须要做的操作!

chmod 500 /etc/ssl/certs

请注意:在实验环境中可以通过命令行生成CA证书,但在生产环境中必须向CA证书厂商申请注册(否则浏览器不识别)

3.修改配置文件/etc/vsftpd/vsftpd.conf

# 开启ssl证书功能

ssl_enable=YES

# 支持ssl1-3的版本

ssl_tlsv1=YES

ssl_sslv2=YES

ssl_sslv3=YES

# 允许匿名用户(虚拟用户)使用ssl证书功能

allow_anon_ssl=YES

# 强制匿名用户(虚拟用户)登录时使用ssl证书功能

force_anon_logins_ssl=YES

# 强制匿名用户(虚拟用户)传输数据时使用ssl证书功能

force_anon_data_ssl=YES

# 强制系统用户登录时使用ssl证书功能

force_local_logins_ssl=YES

# 强制系统用户传输数据时使用ssl证书功能

force_local_data_ssl=YES

# 服务器签字证书存储位置

rsa_cert_file=/etc/ssl/certs/vsftpd.crt

# 服务器私钥存储位置

rsa_private_key_file=/etc/ssl/certs/vsftpd.key

4.客户端验证

(1)同网段主机继续抓包

(2)使用第三方客户端进行登录(支持服务器类型:FTP over TLS)

(3)查看抓包信息

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/815808.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度学习图像处理基础工具——opencv 实战2 文档扫描OCR

输入一个文档,怎么进行文档扫描,输出扫描后的图片呢? 今天学习了 opencv实战项目 文档扫描OCR 问题重构:输入图像 是一个含有文档的图像——> 目标是将其转化为 规则的扫描图片 那么怎么实现呢? 问题分解&#…

Python 复杂密码图形化生成工具,支持选择生成10位和12位复杂密码(初版)

代码 #!/usr/bin/env python # -*- coding: utf-8 -*- # Time : 2024/3/26 15:22 # Author : wyq # File : 部署测试.py import random import string from tkinter import *def generate_password(length):characters string.ascii_letters string.digits string.p…

【vue】Vue3开发中常用的VSCode插件

Vue - Official:vue的语法特性,如代码高亮,自动补全等 Vue VSCode Snippets:自定义一些代码片段 v3单文件组件vdata数据vmethod方法 别名路径跳转 参考 https://www.bilibili.com/video/BV1nV411Q7RX

学校4-11天梯赛选拔赛

目录 L1-5 6翻了 题目 输入格式: 输出格式: 输入样例: 输出样例: 思路 AC代码 L1-1 嫑废话上代码 题目 输入格式: 输出格式: 输入样例: 输出样例: AC代码 L1-8 刮刮彩…

深入了解边缘AI的发展

人工智能先进功能的融合、物联网设备的广泛采用以及边缘计算的强大性能释放了边缘AI的潜力。这种变革性的协同作用涵盖了辅助医疗诊断、自动驾驶和仓库物流自动化等应用。 边缘计算起源于1990年代的内容分发网络,现在被广泛使用,尤其是在边缘AI领域。企…

Vue入门:天不生Vue,前端万古如长夜 - Vue从入门到放弃

👋 Vue环境搭建 首先,搭一个打代码的环境 1.安装node.js 在使用VS Code之前,需要安装Vue的开发环境。 安装Vue的最简单方法是使用npm包管理器,先安装Node.js和npm。 node官网 ​​ 2.配置环境变量 在nodejs安装目录下新建…

免费分享Springboot+Vue的影院管理系统源码,真酷!

今天给大家分享一套基于SpringbootVue的影院管理系统源码,在实际项目中可以直接复用。(免费提供,文末自取) 一、系统运行图 1、登陆页面 2、系统后台 3、选座功能 影院管理系统通常具有以下七个功能点: 1.电影管理: 包括电影信…

c++ - 动态载入DLL接口,可以给IDA静态分析增加一点麻烦

文章目录 c - 动态载入DLL接口,可以给IDA静态分析增加一点麻烦概述笔记测试工程test_load_dll_then_call_api.cppCMyUser32Dll.hCMyUser32Dll.cppLateLoad.hIDA静态分析引入表中没有PostMessageW字符串查找能找到PostMessageW备注看看CMyUser32Dll.h编译完的样子备注…

CSS快速入门

目录 一、CSS介绍 1、什么是CSS? ​编辑2、基本语法规范 3、引入方式 4、规范 二、CSS选择器 1、标签选择器 2、类(class)选择器 3、id选择器 4、通配符选择器 5、复合选择器 三、常用CSS 1、color 2、font-size 3、border 4…

【300套】基于Springboot+Vue的Java毕业设计项目(附源码+演示视频+LW)

大家好!我是程序猿老A,感谢您阅读本文,欢迎一键三连哦。 🧡今天给大家分享300的Java毕业设计,基于Springbootvue框架,这些项目都经过精心挑选,涵盖了不同的实战主题和用例,可做毕业…

电影《你想活出怎样的人生》观后感

上周去看了宫崎骏电影《你想活出怎样的人生》,就像作为导演问观众的一个问题一样,宫崎骏老爷子,在电影中,给出了他的一些开放式答案。自己可是说是宫崎骏的粉丝,宫崎骏老爷子的大部分电影,自己基本都看过了…

clion最新安装教程

还在用Dev-C吗?也尝试了很多C编辑器,不是太老,就是太复杂。对于c开发者来说clion真的好用,CLion是一款专为开发C及C所设计的跨平台IDE。难受的是cion并不免费,仿佛是在证明好货不贵的道理,只能免费用30天。…

2024年少儿编程赛事时间表整理

01 信息学奥赛路线比赛 来源:https://www.noi.cn/ 首先,信息学奥赛是升学最有帮助的一个赛事了,从CSP-J/P开始到NOIP再到最后的NOI,对科技特长生、高考加分都有较大裨益,但相对难度也是最大的。 小学可以参加的是CSP-J比赛,但是和初中生一起考试,不占优势,胜在早入门…

4.14学习总结

java网络编程 一.网络编程的概念和原理 概念: 网络编程是指通过计算机网络进行数据传输和通信的编程技术。在网络编程中,可以实现不同计算机之间的数据交互和通信,从而实现分布式系统、客户端-服务器应用等。 Java网络编程基于TCP/IP协议栈进行通信&…

离谱!奇安信人事总监透露:Web安全不会岗位这些就别投简历了

有人的地方就有江湖,有互联网安全的地方,就必然有Web安全工程师的身影。但其实Web安全是近几年才备受关注的,从事这方面的专业人员并不多,这就导致整个市场Web安全研究员的供求严重不平衡。 这种供求不平衡直接反映在Web安全研究…

软考之零碎片段记录(十五)+复习巩固(十)

一、学习 1. 多对多关系模式 举例:学生和课程。顾客和商品等。 多对多关系的确立需要有中间表,需要使用两个外键确认表中的唯一数据。 2. 数据库范式 1nf 表中每个字段都是原子性不可查分的。在关系(或表)中,每一行…

使用Python的Pillow库进行图像处理书法参赛作品

介绍: 在计算机视觉和图像处理领域,Python是一种强大而流行的编程语言。它提供了许多优秀的库和工具,使得图像处理任务变得轻松和高效。本文将介绍如何使用Python的wxPython和Pillow库来选择JPEG图像文件,并对选中的图像进行调整和…

SpringBoot自动装配

清明前夕,我发表了一篇与Spring Cloud有关的文章,原计划在这篇文章之后,就梳理Eureka注册中心的相关知识。然而在跟踪之后,我才发现上来就谈Eureka组件的实现原理是不现实的,因为我根本不清楚SpringBoot是如何集成Eure…

【笔记】mysql版本6以上时区问题

前言 最近在项目中发现数据库某个表的createTime字段的时间比中国时间少了13个小时,只是在数据库中查看显示时间不对,但是在页面,又是正常显示中国时区的时间。 排查 项目中数据库的驱动使用的是8.0.19,驱动类使用的是com.mysq…

Open CASCADE学习|实现Extrude功能

首先定义了一些基本的几何元素,如线、圆和平面,然后使用makeExtrudebydir函数来对一个面进行挤出操作。下面是详细过程: 定义Extrude函数:makeExtrudebydir函数接受一个TopoDS_Shape对象和一个gp_Vec对象作为参数。TopoDS_Shape是…