【linux防火墙】iptables的四表五链以及实操应用

目录

一、防火墙的基本认识

浅提一下iptables

二、防火墙的分类

三、netfilter中的五个勾子函数和报文流向

四、netfilter/iptables的简介

五、iptables的原理讲解和四表五链

内核中数据包传输的过程:

六、iptables

        iptables的语法:

七、实操

七、设置默认策略

八、通用匹配

九、隐含扩展

十、显示扩展模块

10.1multiport扩展(multiple port是多个端口)

 10.2iprange扩展(表示ip范围)

10.3mac地址模块

10.4string字符串

10.5time模块

10.6connlimit模块

10.7state模块


一、防火墙的基本认识

Linux防火墙是由Netfilter组件提供的,Netfilter工作在内核空间,集成在linux内核中

Netfilter 是Linux 2.4.x之后新一代的Linux防火墙机制,是linux内核的一个子系统。Netfilter采用模块化设计,具有良好的可扩充性,提供扩展各种网络服务的结构化底层框架。Netfilter与IP协议栈是无缝契合,并允许对数据报进行过滤、地址转换、处理等操作

##查看内核中的netfilter有那些相关配置
[root@localhost ~]#grep -i netfilter /boot/config-3.10.0-693.el7.x86_64 
# IP: Netfilter Configuration
# IPv6: Netfilter Configuration
# iptables trigger is under Netfilter config (LED target)
##表明iptables是建立在netfilter配置之下的

浅提一下iptables

由软件包iptables提供的命令行工具,工作在用户空间,用来编写规则,写好的规则被送往netfilter,告诉内核如何去处理信息包

个人理解netfilter是内核态的,iptables是接近用户态的,人为设定防火墙策略,由内核netfilter去生效

二、防火墙的分类

按保护范围划分:

- 主机防火墙:服务范围为当前一台主机
- 网络防火墙:服务范围为防火墙一侧的局域网

按实现方式划分:

- 硬件防火墙:在专用硬件级别实现部分功能的防火墙;另一个部分功能基于软件实现,如:华为,  山石hillstone,天融信,启明星辰,绿盟,深信服, PaloAlto , fortinet, Cisco, Checkpoint, NetScreen(Juniper2004年40亿美元收购)等,本身就是一台服务器
- 软件防火墙:运行于通用硬件平台之上的防火墙的应用软件,Windows 防火墙 ISA --> Forefront

按网络协议划分:数据封装的是mac头部、ip头部、协议和端口号、应用层协议、数据

- 网络层防火墙:(4层原理)OSI模型下四层,又称为包过滤防火墙(可以处理四层以内的数据)
- 应用层防火墙/代理服务器:(7层原理)proxy 代理网关,OSI模型七层(不仅可以处理四层一下,还可以处理真实数据,比如过滤关键字)

包过滤防火墙

网络层对数据包进行选择,选择的依据是系统内设置的过滤逻辑,被称为访问控制列表(ACL),通过检查数据流中每个数据的源地址,目的地址,所用端口号和协议状态等因素,或他们的组合来确定是否  允许该数据包通过

优点:对用户来说透明,处理速度快且易于维护

缺点:无法检查应用层数据,如病毒等

应用层防火墙

应用层防火墙/代理服务型防火墙,也称为代理服务器(Proxy Server)

将所有跨越防火墙的网络通信链路分为两段

内外网用户的访问都是通过代理服务器上的“链接”来实现优点:在应用层对数据进行检查,比较安全

缺点:增加防火墙的负载

提示:现实生产环境中所使用的防火墙一般都是二者结合体,即先检查网络数据,通过之后再送到应用  层去检查

三、netfilter中的五个勾子函数和报文流向

netfilter在内核中选取五个位置放了五个勾子,function(INPUT  OUTPUT FORWARD PREROUTING POSTROUTING),而这五个hook function向用户开放,用户可以通过一个命令工具向其写入规则。(iptables就是一种命令工具)

四、netfilter/iptables的简介

iptables的组成概述

linux的防火墙体系主要是工作在网络层,针对TCP/IP数据包实施过滤和限制,属于典型的包过滤防火墙(或者说是网络层防火墙,4层原理的防火墙)。linux系统的防火墙体系是基于内核编码实现的,是非常稳定和高效的,所以应用广泛;

netfilter/iptables:ip信息包过滤系统,实际上是由两个组件组成:netfilter和iptables;

主要工作在网络层,针对ip数据包,体现在对包内的ip地址、端口信息处理。

netfilter/iptables关系:

netfilter:属于内核态,又称内核空间的防火墙功能体系。linux好多东西都是内核态、用户态,那我们作为运维,更加关注的是用户态,内核关注较少,内核是由开发人员比较关注的。这里存在了一些过滤表,这些表包含了内核用来控制信息包过滤出来的规则集合。

iptables:数据用户态,又称为是用户空间的防火墙管理体系。是一种用来管理linux防火墙的命令程序,它使插入、修改和删除数据包过滤表中的规则变得容易,通常是在/sbin/iptables目录下。

netfilter/iptables后期简称为iptables。iptables是基于内核的防火墙,其中内置了raw、mangle、 nat和filter四个规则表。表中所有规则配置后,立即生效。

五、iptables的原理讲解和四表五链

原本是五表五链:

五表:raw、mangle、nat、filter、security(用得少)

五链:prerouting、postrouting、input、output、forward

详解:

【四表】
raw:主要用来决定是否对数据包进行状态跟踪 包含两个规则链,OUTPUT、PREROUTING
mangle:修改数据包内容,用来做流量整形的,给数据包设置标记。包含五个规则链,INPUT、 OUTPUT、 FORWARD、 PREROUTING、 POSTROUTING
nat:负责网络地址转换,用来修改数据包中的源、目标IP地址或端口。包含三个规则链,OUTPUT、PREROUTING、POSTROUTING。
filter:负责过滤数据包,确定是否放行该数据包(过滤)。包含三个链,即即INPUT、OUTPUT、FORWARD

【五链】
PREROUTING:路由判断前,在进行路由选择前处理数据包,用来修改目的地址,用来做DNAT。相当于把内网服务器的IP和端口映射到路由器的外网IP和端口上。
POSTROUTING:路由判断后,在进行路由选择后处理数据包,用来修改源地址,用来做SNAT。相当于内网通过路由器NAT转换功能实现内网主机通过一个公网IP地址上网。
FORWARD:转发规则,处理转发数据包,匹配流经本机的数据包
INPUT:进入本机前
OUTPUT:进入本机后,一般不在此链上做配置(string模块使用的在output链)

总结:

表中有链,链中有规则

表的优先级:

security -->raw-->mangle-->nat-->filter

链:表示在什么时机处理流量

表的用处:存放链和规则,控制流量

内核中数据包传输的过程:

首先:当一个数据进入网卡的时候,数据包会先进入prerouting链,内核根据数据包的目的ip来判断是否需要转发至下一个链表——forward或者input;

如果是到本机的:到达数据包会到INPUT链,到达之前先查规则,看是否放行,允许的话继续往下就进入了本机,任何进程都会受到该数据。本机上处理数据包的程序会发送数据包到output链,也是根据output的链表规则查看是否放行;最后如果ouput允许的话,再根据数据包的目的ip来进行转发,有一个路由判断,数据包会到到达postrouting,再次查询策略表,放行的话就继续,不行就丢弃; 

另一方面,如果是需要进行转发的数据包,此时本机是一台路由功能的服务器,一次匹配forward、postrouting规则链表,允许则转发,不允许则丢弃;

三种报文流向

  • 流入本机:PREROUTING --> INPUT-->用户空间进程

  • 流出本机:用户空间进程 -->OUTPUT--> POSTROUTING

  • 转发:PREROUTING --> FORWARD --> POSTROUTING

六、iptables

centos7是默认使用firewalld防火墙,需要永久关闭。

##需要安装iptables
[root@localhost test]#rpm -q iptables
iptables-1.4.21-18.0.1.el7.centos.x86_64

iptables的语法:

##iptables的语法:
iptables [-t 表名] -命令选项 链表 规则设置 -j 策略

##详解:
1、表名不写,默认是filter过滤表,其他表增删改查时候需要写上
2、命令选项有:
-A:-A 链 编号,表示追加,不写编号默认是在最后一行添加
-I:-I 链 编号,表示插入,不写编号默认是在第一行插入
-P:-P 链,表示修改链的默认策略,ACCEPT和DROP两种
-D:-D 链 编号,表示删除某一条策略
-F:表示清空
-L:表示查看,-vnL,v表示详细,n表示数字化,L表示列表且L必须写到最后
-R:-R 链 编号,表示替换某一条规则
-Z:清空链的计数器(匹配到的数据包的大小和总和)iptables -Z
-N:新加自定义链
-X:清空自定义链的规则,不影响其他链 	 iptables -X
-S:看链的所有规则或者某个链的规则/某个具体规则后面跟编号

--line-num:表示显示编号

查询的命令:
iptables -vnL [-t 表名]
查询并显示规则编号:
iptables -vnL [-t 表名] --line-num

##详解:
1、表名不写,默认是filter过滤表,其他表增删改查时候需要写上
2、命令选项有:
-A:-A 链 编号,表示追加,不写编号默认是在最后一行添加
-I:-I 链 编号,表示插入,不写编号默认是在第一行插入
-P:-P 链,表示修改链的默认策略,ACCEPT和DROP两种
-D:-D 链 编号,表示删除某一条策略
-F:表示清空
-L:表示查看,-vnL,v表示详细,n表示数字化,L表示列表且L必须写到最后
-R:-R 链 编号,表示替换某一条规则
-Z:清空链的计数器(匹配到的数据包的大小和总和)iptables -Z
-N:新加自定义链
-X:清空自定义链的规则,不影响其他链      iptables -X
-S:看链的所有规则或者某个链的规则/某个具体规则后面跟编号

--line-num:表示显示编号

查询的命令:
iptables -vnL [-t 表名]
查询并显示规则编号:
iptables -vnL [-t 表名] --line-num

规则设置与策略选项:

##iptables的语法:
iptables [-t 表名] -命令选项 链表 规则设置 -j 策略

##相关规则有:可以理解为五元组加流入流出网卡
-s:源ip地址,或者源网段
-d:表示目标ip地址,或者目标网段
-p:指定协议,如tcp、udp、icmp、dhcp等等
--sport:表示源端口,基于协议的,所以是-p的子命令选项
--dport:表示目标端口,基于协议的,所以是-p的子命令选项
-i:表示流量流入的网卡
-o:表示流量流出的网卡

-j后面跟着跳转策略
ACCEPT:表示接收
DROP:表示拒绝,且无回复
REJECT:表示拒绝,但是有回复
LOG:表示标记,在/var/log/messages 文件中记录日志信息,然后将数据包传递给下一条规则
SNAT:修改数据包的源ip地址
DNAT:修改数据包的目标ip地址
MASQUERADE:伪装成一个非固定公网IP地址

##相关规则有:可以理解为五元组加流入流出网卡
-s:源ip地址,或者源网段
-d:表示目标ip地址,或者目标网段
-p:指定协议,如tcp、udp、icmp、dhcp等等
--sport:表示源端口,基于协议的,所以是-p的子命令选项
--dport:表示目标端口,基于协议的,所以是-p的子命令选项
-i:表示流量流入的网卡
-o:表示流量流出的网卡

-j后面跟着跳转策略(需要大写,命令可以补全)
ACCEPT:表示接收
DROP:表示拒绝,且无回复
REJECT:表示拒绝,但是有回复
LOG:表示标记,在/var/log/messages 文件中记录日志信息,然后将数据包传递给下一条规则
SNAT:修改数据包的源ip地址
DNAT:修改数据包的目标ip地址
MASQUERADE:伪装成一个非固定公网IP地址

 一张图总结:

七、实操

##拒绝来自192.168.20.6主机访问本机的22端口
[root@localhost ~]#iptables -A INPUT -s 192.168.20.6 -p tcp --dport 22 -j DROP 
##查看filter规则表
[root@localhost ~]#iptables -vnL
##查看filter规则表,并显示规则编号
[root@localhost ~]#iptables -vnL --line-num
##删除规则编号2
[root@localhost ~]#iptables -D INPUT 2
[root@localhost ~]#iptables -vnL --line-num

[root@localhost ~]#iptables -F
##清空

七、设置默认策略

iptables 的各条链中,默认策略是规则匹配的最后一个环节——当找不到任何一条能够匹配数据包的规则时,则执行默认策略。默认策略的控制类型为 ACCEPT(允许)、DROP(丢弃)两种。

语法:iptables [-t表名] -P <链名> <控制类型>

[root@localhost ~]#iptables -t filter -P INPUT DROP
##修改默认input为drop

 添加允许连接本机回环网卡

[root@localhost ~]#iptables -A INPUT -i lo -j ACCEPT 
##添加允许流量进入本机回环网卡

[root@localhost ~]#iptables -A INPUT -s 192.168.20.1 -j ACCEPT
##192.168.20.1代表的是电脑真机

默认是DROP的时候,拒绝所有,那么需要设置白名单,同时iptables -F清空命令失效

改为

当ACCEPT的时候,允许所有,需要设置黑名单,那么想要有与DROP一样的效果,就在最后一条加上拒绝所有!! 

##先在accept基础上设置黑名单,等同于iptables -P INPUT DROP
[root@localhost ~]#iptables -A INPUT -j DROP
[root@localhost ~]#iptables -vnL

##在第一行插入,添加允许xshell连接本机
[root@localhost ~]#iptables -I INPUT -s 192.168.20.1 -j ACCEPT 
[root@localhost ~]#iptables -vnL

八、通用匹配

直接使用,不依赖于其他条件或扩展,包括网络协议、IP地址、网络接口等条件。
协议匹配: -p协议名
地址匹配: -s 源地址、-d目的地址
#可以是IP、网段、域名、空(任何地址)
接口匹配: -i入站网卡、-o出站网卡  
iptables -A FORWARD ! -p icmp -j ACCEPT
iptables -A INPUT -s 192.168.20.30 -j DROP
iptables -I INPUT -i ens33 -s 192.168.91.0/24 -j DROP

iptables -I INPUT -p icmp -j DROP
iptables -A FORWARD ! -p icmp -j ACCEPT           //感叹号”!”表示取反
[root@localhost ~]#iptables -I INPUT 2 -s 192.168.20.0/24 -p icmp -j DROP 

九、隐含扩展

man iptables-extensions
查看扩展帮助

iptables在使用-p的时候是指明了特定的协议,无需在使用-m指明拓展的模块机制,不需要动手去加载扩展模块,要求以特定的协议匹配,包括端口,tcp标记,icmp类型等条件;

端口匹配:--sport源端口;--dport 目标端口

##可以是个别端口,端口范围

[!] --source-port, --sport port[:port]:匹配报文源端口,可为端口连续范围
[!] --destination-port,--dport port[:port]:匹配报文目标端口,可为连续范围
[!] --tcp-flags mask comp
     mask 需检查的标志位列表,用,分隔 , 例如 SYN,ACK,FIN,RST
     comp 在mask列表中必须为1的标志位列表,无指定则必须为0,用,分隔tcp协议的扩展选项

--tcp--flags SYN,ACK,FIN,RST SYN   表示要检查的标志位为SYN,ACK,FIN,RST四个,其中SYN必须为1,余下的必须为0,第一次握手

--tcp-flags SYN,ACK,FIN,RST SYN,ACK 第二次握手,表示检查四个确认位,需要SYN和ACK都为1

--sport 1000 ##表示匹配源端口是1000的数据包

--sport 1000:3000 ##匹配源端口是1000至3000的数据包

--sport :3000 ##表示匹配端口是3000以内的数据包

--sport 1000:  ##表示匹配端口是1000以上的数据包

注意: --sport和--dport 必须配合-p <协议类型>使用,因为要有协议才有端口号啊

端口可以使用的范围 0-65535 因为tcp和udp的端口是16字节,表示2的16次方为65535

[root@localhost ~]#iptables -A INPUT -p tcp  --sport 20:80 -j REJECT 
#20到80端口 全部被拒

TCP标记匹配: --tcp-flags TCP标记:SYN,RST,ACK,SYN
[root@localhost ~]#iptables -I INPUT -i ens33 -p tcp --tcp-flags FIN,RST,ACK SYN -j ACCEPT
#丢弃SYN请求包,放行其他包
[root@localhost html]#iptables -A INPUT -p tcp --dport 20:80 -j DROP 

[root@localhost ~]#iptables -I INPUT -s 192.168.20.1 -j ACCEPT 

拓展,允许本机去访问192.168.20.8,不允许192.168.20.8访问本机;

思路,如果是禁止源ip地址的话,数据是有去有回,本机也无法ping另一台主机;那么往底层思考,根据icmp的请求和回复包的type来进行限制,请求是type和code分别是80,回复包type和code分别是00,那就是允许192.168.20.8回复00包,不允许发80请求包,也就是说限制icmp 的type为8即可

[root@localhost ~]#iptables -I INPUT -s 192.168.20.8 -p icmp --icmp-type 8 -j DROP


#####icmp 协议的扩展选项
[!] --icmp-type {type[/code]|typename}
 type/code
 0/0   echo-reply icmp应答
 8/0   echo-request icmp请求

 

十、显示扩展模块

显示扩展即必须使用-m选项指明要调用的扩展模块名称,需要手动加载扩展模块

语法:[-m matchname [per-match-options]] 

10.1multiport扩展(multiple port是多个端口)

支持以离散的方式匹配不同的端口

[!] --source-ports,--sports port1,port2,port3,port4:port5...
#指定多个源端口 逗号隔开
[!] --destination-ports,--dports port1,port2,port3,port4:port5...
# 指定多个目标端口 逗号隔开

[root@localhost ~]#iptables -A INPUT -s 192.168.20.8 -p tcp -m multiport --dport 22,80 -j REJECT 
拒绝来自192.168.20.8主机访问本机的22和80端口

 10.2iprange扩展(表示ip范围)

指明连续的(但一般不是整个网络)ip地址范围,iprange模块只能用于连续的IP地址范围,而不能用于离散的IP地址。

[!] --src-range ip1-ip2 源IP地址范围
[!] --dst-range  ip1-ip2 目标IP地址范围

##注意分隔符是-,表示从ip1到ip2的所有ip
[root@localhost ~]#iptables -A INPUT  -m iprange --src-range 192.168.20.6-192.168.20.8 -j REJECT 
##注意分隔符,iprange模块只允许连续的ip地址,不可以是离散的ip

10.3mac地址模块

mac 模块可以指明源MAC地址,,适用于:PREROUTING, FORWARD,INPUT 

首先因为目标mac地址是变化的,与路由转发原理相关。只有这三种链能见到源mac头部

##语法记忆,source是全拼
-m   mac    [!] --mac-source XX:XX:XX:XX:XX:XX

10.4string字符串

对报文中的应用层数据做字符串模式匹配检测

--algo {bm|kmp} 字符串匹配检测算法
 bm:Boyer-Moore           算法
 kmp:Knuth-Pratt-Morris   算法

--from offset 开始查询的地方
--to offset   结束查询的地方


[!] --string pattern 要检测的字符串模式
[!] --hex-string pattern要检测字符串模式,16进制格式
[root@localhost ~]#echo hello> /var/www/html/index.html 
[root@localhost ~]#echo baidu> /var/www/html/index1.html 

##不大明白这个62具体是怎么算出来的
[root@localhost ~]#iptables -A OUTPUT -d 192.168.20.6 -m string --algo bm --from 62 --string "hello" -j REJECT 

[root@localhost ~]#iptables -A OUTPUT -d 192.168.20.6 -m string --algo bm --from 1 --string "hello" -j REJECT 

[root@localhost ~]#iptables -A OUTPUT -d 192.168.20.6 -m string --algo bm --string "hello" -j REJECT 

##这个也可以偷懒不写字节,这样可以匹配速度回慢一些
##使用这个模块需要思考清楚,过滤的是服务器回复给客户端的内容,那么限制的应该是目的ip地址

##这是使用模块必须要有的
-m string 
--algo bm ##也可以是另一种算法
--string

10.5time模块

根据将报文到达的时间与指定的时间范围进行匹配(有 bug ubuntu没问题)

--datestart YYYY[-MM[-DD[Thh[:mm[:ss]]]]] 日期
--datestop YYYY[-MM[-DD[Thh[:mm[:ss]]]]]
--timestart hh:mm[:ss]       时间
--timestop hh:mm[:ss]
[!] --monthdays day[,day...]   每个月的几号
[!] --weekdays day[,day...]   星期几,1 – 7 分别表示星期一到星期日
--kerneltz:内核时区(当地时间),不建议使用,CentOS 7版本以上系统默认为 UTC
注意: centos6 不支持kerneltz ,--localtz指定本地时区(默认)

man iptables-extensions
[root@localhost ~]#iptables -A INPUT -s 192.168.20.6 -m time --timestart 14:00 --timestop 14:20 -j REJECT 
##表示启用time模块

10.6connlimit模块

根据每客户端IP做并发连接数数量匹配

可防止Dos(Denial of Service,拒绝服务)攻击

--connlimit-upto N #连接的数量小于等于N时匹配
--connlimit-above N #连接的数量大于N时匹配
##表示不允许访问本机超过2个
[root@localhost ~]#iptables -A INPUT -m connlimit --connlimit-above 2 -j REJECT 
[root@localhost ~]#iptables -vnL

拓展:限制连接的除了这个模块以外,还有内核本身的参数

/proc/sys/net/netfilter/nf_contrack_max这里可以进行调优

10.7state模块

  • NEW:新发出请求;连接追踪信息库中不存在此连接的相关信息条目,因此,将其识别为第一次发出的请求

  • ESTABLISHED:NEW状态之后,连接追踪信息库中为其建立的条目失效之前期间内所进行的通信状态

  • RELATED:新发起的但与已有连接相关联的连接,如:ftp协议中的数据连接与命令连接之间的关系

  • INVALID:无效的连接,如flag标记不正确

  • UNTRACKED:未进行追踪的连接,如:raw表中关闭追踪

 --state state
 
ipatables  -A INPUT -m state --state   NEW            -j  REJECT
ipatables  -A INPUT  -m state --state  ESTABLISHED    -j   ACCEPT
                  
 新用户不可以访问  老用户可以继续访问 老用户退出不可以访问了 
[root@localhost ~]#iptables -A INPUT -m state --state NEW -j REJECT 
[root@localhost ~]#iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

二.运算符

运算符 1.算术运算符2.比较运算符3.逻辑运算符 1.算术运算符 算数运算符主要用于数学运算&#xff0c;其可以连接运算符前后的两个数值或表达式&#xff0c;对数值或表达式进行 - * / 和 取模%运算 1.加减法运算符 mysql> SELECT 100,100 0,100 - 0,100 50,100 50 - …

RK3568平台开发系列讲解(Linux系统篇)通过OF函数获取设备树节点实验

** 🚀返回专栏总目录 文章目录 一、获取获取设备树节点二、驱动程序沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇将介绍通过OF函数获取设备树节点实验 一、获取获取设备树节点 在 Linux 内核源码中提供了一系列的 of 操作函数来帮助我们获取到设备树中编写的…

LLM面面观之Prefix LM vs Causal LM

1. 背景 关于Prefix LM和Causal LM的区别&#xff0c;本qiang在网上逛了一翻&#xff0c;发现多数客官只给出了结论&#xff0c;但对于懵懵的本qiang&#xff0c;结果仍是懵懵... 因此&#xff0c;消遣了多半天&#xff0c;从原理及出处&#xff0c;交出了Prefix LM和Causal …

01数仓平台 Hadoop介绍与安装

Hadoop概述 Hadoop 是数仓平台的核心组件。 在 Hadoop1.x 时代&#xff0c;Hadoop 中的 MapReduce 同时处理业务逻辑运算和资源调度&#xff0c;耦合性较大。在 Hadoop2.x 时代&#xff0c;增加了 Yarn。Yarn 只负责资源的调度&#xff0c;MapReduce 只负责运算。Hadoop3.x 在…

【已解决】游戏缺少xinput1_3.dll的详细解决方案与详情解析

在现代科技日新月异的时代&#xff0c;电脑已经成为我们生活和工作中不可或缺的工具。然而&#xff0c;由于各种原因&#xff0c;电脑可能会出现一些问题&#xff0c;其中之一就是xinput1_3.dll文件的缺失。本文将详细介绍xinput1_3.dll丢失对电脑的影响以及丢失的原因&#xf…

Web安全漏洞分析-XSS(下)

随着互联网的迅猛发展&#xff0c;Web应用的普及程度也愈发广泛。然而&#xff0c;随之而来的是各种安全威胁的不断涌现&#xff0c;其中最为常见而危险的之一就是跨站脚本攻击&#xff08;Cross-Site Scripting&#xff0c;简称XSS&#xff09;。XSS攻击一直以来都是Web安全领…

优化器原理——权重衰减(weight_decay)

优化器原理——权重衰减&#xff08;weight_decay&#xff09; weight_decay的作用 原理解析 实验观察 在深度学习中&#xff0c;优化器的 weight_decay 参数扮演着至关重要的角色。它主要用于实现正则化&#xff0c;以防止模型过拟合。过拟合是指模型在训练数据上表现优异&…

C++ 通过CryptoPP计算Hash值

Crypto (CryptoPP) 是一个用于密码学和加密的 C 库。它是一个开源项目&#xff0c;提供了大量的密码学算法和功能&#xff0c;包括对称加密、非对称加密、哈希函数、消息认证码 (MAC)、数字签名等。Crypto 的目标是提供高性能和可靠的密码学工具&#xff0c;以满足软件开发中对…

爬虫http代理有什么用处?怎么高效使用HTTP代理?

在进行网络爬虫工作时&#xff0c;我们有时会遇到一些限制&#xff0c;比如访问频率限制、IP被封等问题。这时&#xff0c;使用HTTP代理可以有效地解决这些问题&#xff0c;提高爬虫的工作效率。本文将介绍爬虫HTTP代理的用处以及如何高效地使用HTTP代理。 一、爬虫HTTP代理的用…

小航助学题库蓝桥杯题库c++选拔赛(23年8月)(含题库教师学生账号)

需要在线模拟训练的题库账号请点击 小航助学编程在线模拟试卷系统&#xff08;含题库答题软件账号&#xff09; 需要在线模拟训练的题库账号请点击 小航助学编程在线模拟试卷系统&#xff08;含题库答题软件账号&#xff09;

spring的事物

DataSourceTansactionManager Spring与JdbcTemplate或MyBatis框架集成时,提供的事务管理器. 事物的特性&#xff1a;原子性&#xff0c;一致性&#xff0c;隔离性&#xff0c;持久性 int TRANSACTION_READ_UNCOMMITTED 1; 未提交读 int TRANSACTION_READ_COMMITTED 2; …

App的测试,和传统软件测试有哪些区别?应该增加哪些方面的测试用例?

从上图可知&#xff0c;测试人员所测项目占比中&#xff0c;App测试占比是最高的。 这就意味着学习期间&#xff0c;我们要花最多的精力去学App的各类测试。也意味着我们找工作前&#xff0c;就得知道&#xff0c;App的测试点是什么&#xff0c;App功能我们得会测试&#xff0…

使用idea中的Live Templates自定义自动生成Spring所需的XML配置文件格式

文章目录 一、引言&问题描述二、解决方案 一、引言&问题描述 在使用Spring来管理对象时&#xff0c;我们需要创建Spring的配置文件applicationContext.xml&#xff0c;如下图位置&#xff1a; 在resources目录下选择new->File 或 使用idea自带模板new->XML Con…

hugging face下载dataset时候出现You must be authenticated to access it.问题解决

Cannot access gated repo for url https://huggingface.co/tiiuae/falcon-180B/resolve/main/tokenizer_config.json. Repo model tiiuae/falcon-180B is gated. You must be authenticated to access it. 参考https://huggingface.co/docs/huggingface_hub/guides/download …

Android : GPS定位 获取当前位置—简单应用

示例图&#xff1a; MainActivity.java package com.example.mygpsapp;import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import androidx.core.app.ActivityCompat; import androidx.core.content.ContextCompat;import android.Manif…

CentOS7安装MiniO

目录 1、简介 2、安装 2.1、Binary 2.2、RPM&#xff08;RHEL&#xff09;就是红帽&#xff0c;CentOS就用这个 2.3、DEB&#xff08;Ubuntu/Debian&#xff09; 2.4、创建指定的目录并且将下载的安装包上传上去 3、启动MiniO服务 3.1、脚本如下&#xff1a; 4、进入服务…

汽车悬架底盘部件自动化生产线3d检测蓝光三维测量自动化设备-CASAIM-IS(2ND)

随着汽车工业的不断发展&#xff0c;对于汽车零部件的制造质量和精度要求也在不断提高。汽车悬架底盘部件作为汽车的重要组成部分&#xff0c;其制造质量和精度直接影响到整车的性能和安全性。因此&#xff0c;采用CASAIM-IS&#xff08;2ND&#xff09;蓝光三维测量自动化设备…

机器学习与 S3 相集成 :释放数据的力量

文章作者&#xff1a;Libai 引言 在当今数据驱动的世界中&#xff0c;企业不断寻求如何高效利用企业自身所产生的数据的解决方案。机器学习已经成为一种提取有价值的见解和做出数据驱动决策的强大工具。然而&#xff0c;机器学习模型的成功在很大程度上依赖于高质量数据的可用…

基于Vue.js的厦门旅游电子商务预订系统的设计和实现

项目编号&#xff1a; S 030 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S030&#xff0c;文末获取源码。} 项目编号&#xff1a;S030&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 景点类型模块2.2 景点档案模块2.3 酒…

【开源视频联动物联网平台】视频AI智能分析部署方式

利用视频监控的AI智能分析技术&#xff0c;可以让视频监控发挥更大的作用&#xff0c;成为管理者的重要决策工具。近年来&#xff0c;基于视频监控的AI分析算法取得了巨大的发展&#xff0c;并在各种智慧化项目中得到了广泛应用&#xff0c;为客户提供更智能化的解决方案。 然…