南宁一小学推出作业熔断机制 此前已有多所学校“熔断”小学生晚间作业

日前,广西南宁一所小学推出的教育教学新规,在家长群体中引发讨论。按照这份最新举措,学校要求,每晚9:30后,学生要停下作业安心休息,即使未能完成课题,第二天也不...接下来由新高三网小编为你整理了南宁一小学推出作业熔断机制相关详细内容,我们一起来分享吧。
南宁一小学推出作业熔断机制 此前已有多所学校“熔断”小学生晚间作业
高考之路荆棘密布,但每一步的跋涉都铺就了未来的辉煌之路,全力以赴,决胜高考!高三,是炼狱也是天堂,它让你痛苦,也让你成长,用拼搏的汗水,换取六月的笑容。

一,分析电路:

电路图是电学的重要内容。许多电学题往往一开头就有一句“如图所示的电路中”如果把电路图辨认错了,电路中的电流强度、电压、电阻等物理量的计算也随之而错,造成“全军覆没”的局面。所以分析电路是学好电学的第一步。

简单的电路图,可通过分析电路中的电流通过的路径来进行判断。电流在电路中始终是一路,说明这是一个串联电路。如果电流在电路中分开两路或两路以上,说明这是一个并联电路。对于复杂的电路图,就需通过画等效电路图的方法来分析电路。这种方法可分为四步:

1, 在初中阶段,一般认为电流表的电阻为零,电压表的电阻为无限大。把电流表当作导线,电压表视为开路。

2, 用字母标出电路图中三条导线相交的结点。

3, 从电源的正极出发,根据电流的路径及各个结点的位置画出简单的电路图。

4, 电流表和电压表复位。

例1:请你画出如图一所示的电路的等效电路图,并说明电流表和电压表的作用。

解:(1),把电流表当作导线,电压表视为开路。

(2)标出电路图的结点A、B、C、D。

(3) ,根据电流路径,电流由电源正极出发经过D点和R1来到A点,电流在A点分开两路,一路通过R2到达B点,另一路通过R3到达B点,两路在B点汇合到达电源负极形成回路。画出简单易看的电路图(如图一1)。由此可知R2、R3是并联,然后再与R1串联。

(4) ,电流表电压表复位。由电路图一可知C、A两点之间用导线连接在一起可看作同一点,电压表的两个接线柱分别连接D点和A点,所以电压表是测量R1两端的电压。电流通过A点分开两路,一路经过电流表后,再经过R3到达B点,所以电流表是测量通过R3的电流强度(如图一2)。

由上面例子,可看出分析电路的重要性。在复习中应特别强调分析电路,画等效电路图的必要性,使学生掌握这个基本技能。并能养成遇到电学问题,先画出电路图。遇到电路图先分析电路的好习惯。

二,欧姆定律的运用。

欧姆定律是初中电学计算的核心。它揭示了电学三个最重要的物理量:电流、电压、电阻之间的关系。在运用欧姆定律时,应特别注意:

(1),要明确定律中涉及的U、I、R。是同一部分电路的三个物理量。决不能张冠李戴把不属于同一电路中的U、I、R代入公式中计算。

(2)公式 、 、 ,单从数学意义上并无本质不同。但前两式是欧姆定律的数学表达式,后者是电阻的定义式。不能错误地认为“电阻跟电压成正比,跟电流成反比”,也不能认为“导体两端没有电压就没有电阻”。

例1:如图二所示,有两个电阻 、 串联,电源电压为6伏,电阻 的阻值为10欧,电阻 两端的电压为2伏。求:通过电阻 的电流及电阻 的电阻值。

解:由串联电路的特点可知: 。

这道例题是强调运用欧姆定律时,U、I、R的对应性。决不能用 两端的电压或电源电压除以 的电阻值来求得通过 的电流,或用电源电压除以电流来求得 的电阻值。

例题2:如图三所示的电路中,电源电压为6伏,电阻R1的阻值为15欧,电阻R3的阻值为10欧,电流表的读数为0.3安。求电阻R2的阻值是多少欧姆?

分析:这是一个混联电路,电阻R1和R2并联,然后再与R3串联。要求电阻R2的阻值必须知道R2两端的电压和通过R2的电流。由串、并联电路的特点可知,电阻R1和R2两端的电压相等,而这个电压与电阻R3两端的电压的和等于电源电压。通过R1、R2的电流之和等于干路的电流,也就是电流表的读数0.3安。

解:R3两端的电压: =10欧×0.3安=3伏

R1、R2两端的电压: =6伏-3伏=3伏

通过R1的电流:

通过R2的电流: 0.3安-0.2安=0.1安

答:电阻R2的阻值是30欧姆。

这两道例题比较简单,关键是强调U、I、R三个物理量的对应性,以及对串并联电路的特点和欧姆定律的灵活运用。

三,电功、电功率、焦耳定律公式的运用。

初中生在学完欧姆定律时,还觉得电学不是很难。因只需一个公式 或它的变形就可以解决问题。但学到电功( )、电功率( )和焦耳定律( )时,对于这三个十分接近而又联系紧密的概念,容易混淆。有同学反映,这部分内容的大小公式加起来共有十几个,经常会用错公式。学好电学,突破电学的难点,关键在于灵活运用这十几个公式。其实这十几个公式相互间有很深的联系,可通过下图来记忆。

纯电阻电路 (电功率定义式)

公式 、 、 常用于并联电路(电压不变时),公式 、 、 常用于串联电路(电流不变时)。公式 和 只适用于纯电阻电路,对于非纯电阻电路只能用焦耳定律 来计算电流产生的热量。

例题1:两个相同的电阻,把它们串联后接上电源,产生的热量为Q。如果把它们并联后接在同一电源上,则在相等的时间里产生的热量为( )

A, Q ; B, Q; C,4Q; D,2Q 。

分析:由题意可知,两次都接在同一个电源上,电压相等。用公式 来进行计算比较方便。设两个相同的电阻为R,串联后放出的热量为 ,并联后放出的热量为 。由两式的比可知,答案应选C。

例题2:甲、乙两灯分别标有“4V,2W”和“6V,3W”的字样,将两灯并联在电路中,哪一个灯更亮?将两灯串联在电路中,哪一个灯更亮些?(所加电压不会使灯丝熔断)

分析:灯泡的亮度取决于它的实际消耗的电功率,消耗的电功率大些灯泡就亮些。当灯泡两端的电压变化,将引起电功率的变化。而灯丝的电阻是不会随电压的变化而变化的。由灯泡

上所标的额定电压和额定功率,可以求出灯丝的电阻。两灯并联时灯泡两端的电压是相等的,所以用公式 。两灯串联时通过灯丝的电流是相同的,所以用公式 。

解:先计算出两灯丝的电阻

两灯并联时电压相等

因为 < ,所以 > 即甲灯亮些。

两灯串联时电流相等

因为 < ,所以 < 即乙灯亮些。

答:两灯并联接入电路时,甲灯更亮些。两灯串联接入电路时,乙灯更亮些。

四,电路变化。

不少同学反映“变化的电路难,不只从何下手”。这是因为分析变化的电路涉及的内容广,考虑问题深。对电阻、电流强度、电压及电功率相互关系的分析,稍有不慎就会造成连错反应,得出错误的结论。电路的变化,关键是分析电阻的变化。分析电路变化的方法一般可分为四步:

1, 从变化电阻人手。

2, 由串并联电路的特点,看电阻的变化情况。

3, 由总电压(电源电压)不变,得出总电流的变化情况。

4, 根据电路特点以及题意,判断部分电路电流电压电功率的变化。

例1:如图四所示的电路中,滑动变阻器R2的滑片P向右移动。请分析电流表和电压表的变化情况。

解:这是一个串联电路,电阻R1和R2串联。电流表测干路电流,电压表测滑动变阻器两端的电压。滑片P向右移动,滑动变阻器接入电路中的电阻为R2’。分析过程如下:

(1) ,分析电流表的变化情况:

’ 增大

固定不变 R总增大

’ U总不变 减小 电流表读数变小

(2),分析电压表变化的情况: 减小, 增大,不能判断 的变化。直接分析电路中的电阻电流的变化不能得到电压相应的变化。这时应通过分析其它部分电路的变化及电路的特点得出研究电路的变化。这道题可从分析电阻 两端电压的变化入手:

减小

不变 减小

不变 减小

不变 增大

电压表的读数增大

例2:如图五所示的电路中,开关S闭合后,灯泡 的亮度将会怎样变化?

解:灯泡的亮度是由灯泡的实际电功率的大小来决定的。但对于同一个(或同一类型)灯泡的电阻是相同的。灯泡是纯电阻用电器,由 可知,只需分析灯泡两端电压的变化,就可知灯泡亮度的变化。

开关闭合后,电路变成电阻R与灯泡L1并联,然后与灯泡L2串联。R与L1并联的总电阻为R ,闭合前后灯泡L1两端的电压为 和 ,闭合前后灯泡L2两端的电压为 和 。由并联电路的特点可得:

R < < 灯泡L1的亮度将变暗

不变 由并联电路分压原理

<

> 灯泡L2的亮度将变亮

讲完前面四个专题后,应指导学生总结出一些规律:(1),计算前先分析电路,明确电路中几个用电器的连接方式。(2),电路中的电源电压通常是不变的。(3),要抓住电流强度的计算,求出电流是求其他物理量的关键。(4),电路中电流变化的原因是滑动变阻器改变电阻、电路中去掉或连入了电阻,使电路的电阻发生变化。(5),几个用电器无论是串联还是并联,它们的总功率都等于各个用电器的电功率之和( ···)。(6), 、 、, 三式通常用于并联电路。(7), 、 、, 三式通常用于串联电路。

五, 电学实验。

初中电学要求学生掌握根据实物图画出电路图,或根据电路图连接实物图,以及简单的电路设计。要求学生会使用电流表、电压表测电流和电压以及电阻和电功率。初中物理课本中共有组成串联电路和并联电路、用电流表测电流、用电压表测电压、伏安法测电阻、测小灯泡的

电功率等五个学生分组实验。其中前三个实验是为后两个实验作知识及技能的准备,所以复习重点应放在伏安法测电阻、测小灯泡的电功率这两个实验中。下面根据各知识点的联系,分三步来进行电学实验的复习。

1,根据实物图画电路图或根据电路图连接实物图。要求两图的连接方式一致,包括电源、电流表、电压表的正负极一致,各用电器的位置和开关的作用一致。画电路图的方法是先把实物图看懂,特别是看清楚各用电器的连接关系以及开关的作用。然后在头脑中进行加工,形成一个完整的电路图。最后根据电路图“横平竖直”的要求画出相应的电路图。连接实物图的方法是看懂电路图以及看清实物图的分布,然后从电源的一极出发,根据电路图中电流的流向,一段一段地连接实物图。连接时应尽量避免连接的导线相互交叉。

2, 简单的电路设计。电路设计应根据题目的要求分析各用电器的连接方式,以及开关

的控制对象。例如:由“一个开关同时控制两个灯泡亮或暗”的要求,可知电路连接方式有

两种可能:一是开关和两个灯泡是串联的连接方式;二是两个灯泡并联开关接在干路上。由“一个开关控制一个灯泡,另一个开关同时控制两个灯泡,一个灯泡坏了不影响另一个灯泡”的要求,可知两个灯泡是并联的连接关系,一个开关时接在一个灯泡的支路上,而一另开关接在干路上起到总开关的控制作用。然后再根据各用电器的连接方式画出电路图。

3, 学生分组实验的复习。用伏安法测电阻和电功率是初中的两个重要的实验,这两个实验有许多共同的地方,可以通过比较的方法来进行复习。

实验器材

实验电路图

计算公式

测电阻实验

电流表1个、电压表1个、滑动变阻器1个、电池组1个、开关1个、待测电阻1个、导线若干。

测电功率实验

电流表1个、电压表1个、滑动变阻器1个、电池组1个、开关1个、待测灯泡1个、导线若干。

在实验过程中共同注意的问题:(1),电流表和电压表的正确使用。(2),连接线路时必须将开关打开。(3),滑动变阻器的连接。(4),通电之前把滑动变阻器调至接入电路的阻值为最大,实验时才逐步调大接入电路的阻值。

两个实验之间的区别是:测电阻时,电阻两端的电压可以在一定范围内通过滑动变阻器来改变。测额定电功率时,通过滑动变阻器调整灯泡两端的电压等于灯泡的额定电压。

上面五个专题的电学复习,在实施过程中,每一个专题应该补充一些练习和课后作业。通过这五个专题的复习,很好地将电学的有关知识联系起来。让学生能从更高的角度来看这一部分的知识,有新的认识和新的提高,收到了突出重点、分析难点、突破难点的复习效果

南宁一小学推出作业熔断机制

日前,广西南宁一所小学推出的教育教学新规,在家长群体中引发讨论。按照这份最新举措,学校要求,每晚9:30后,学生要停下作业安心休息,即使未能完成课题,第二天也不会受到老师的批评。这样做的目的是确保孩子们获得充足的休息。

南宁一小学作业熔断机制是什么情况

南宁市桂雅路小学在官方微信账号发布了一则“关于作业熔断制度的通知”。据当地媒体报道,消息一经发布,立即在南宁家长群体中引发热议。

按照这份规定,学校要求,每晚9点30分后,学生可以放下作业安心休息,即使作业未能完成,第二天也不会受到老师的批评,确保学生获得充足的休息。

南宁市桂雅路小学桂花小区的学生家长黄女士在接受采访时表示,这项措施对她的孩子影响不大。她女儿虽然已经六年级了,但平时作业并不多,而且通过课后服务,已在学校完成额大部分作业,“晚上8时前她就能完成作业,还有时间看课外书或者画画。”

然而这则新规在公开发布后,其他家长却给出了观点迥异的评价。

一名来自广西的家长表示:有的孩子自律性强,有的孩子自律性差。她担心,政策一旦推广开来,会加速拉开孩子学习成绩的两极分化。

与广西相隔一段距离的河南家长李女士则认为,这种措施说起来容易,真正执行起来却不太现实。

她告诉记者,自己是一名8岁孩子的妈妈,自去年儿子从幼儿园转入小学阶段后,每晚辅导功课已经变成了她和爱人必不可少的任务,“小升初的压力还在,根本不可能熔断作业。说实话,即使我们晚上不让他写作业,也很难保证其他家长不会吧。”

来自湖南二孩家庭的张先生,也在为辅导孩子做作业的事情感到头疼:大女儿9岁在读四年级,从一年级开始就由他来辅导功课。

他介绍,刚开始都是基础入门级题目,没什么压力,每天作业很快完成,最晚不过晚上9点。进入二年级,局势发生了鲜明转变,“我发现作业量和难度渐渐增大,平均每天写完作业都要9点30分左右,最晚的一次写到晚上11点45分。”

“时常是女儿狂哭,妈妈狂怒,隔着门的一家人狂着急。”所以在他看来,实施作业熔断制度,本意是好心,但是现实操作中会有很多问题,尤其是落下功课的学生如何跟上进度,这些亟待解决的问题,在政策推行开后,不能忽视,也不能只丢给家长。

除此之外,面对作业熔断机制,也有一些家长表示点赞和支持:部分家长称感到人性化,能够让孩子早点睡觉。

他们中有人认为:随着政策的逐步推行,学生肩上承载的压力总会被逐渐减轻。

此前已有多所学校“熔断”小学生晚间作业

实际上,作业熔断机制并非南宁首次提出。近些年,多地多所学校在都在尝试“熔断”小学生晚间作业。

最早于2021年9月,安徽阜阳清河小学实施作业“超时熔断制度”,即不管是什么原因,不管是哪个学科的作业,只要超过晚上9点,或总用时超过60分钟,必须停止,并且不需要补做。

2023年2月,江苏一学校关于“作业熔断”的话题曾冲上热搜。常州市博爱小学发布通知,宣布新学期启用作业“九点熔断机制”,即超过晚上9点无条件停止作业,未完成的作业隔天也不用补做,旨在保障学生充足的睡眠。

当时在网友热议下,已经出现不同的观点。

媒体报道评论区,获赞量第一的网友写道:(如果我是不爱做作业的学生)拖也能拖到九点。

也有人就此发出疑问:“需要成绩的时候,家长会去接短路的线吗?”

此外于2023年4月19日,宁波市卫健委、宁波市教育局印发《宁波市中小学生“睡眠改善行动”工作方案》的通知,决定在2023年全市组织开展中小学生“睡眠改善行动工作。其中一项规定试行“作业熔断”,保障小学生就寝不晚于21:20,初中生不晚于22:00,高中生不晚于23:00。

南京市北京东路小学也设置了两个“熔断机制”,晚上9点后,如果三到六年级学生还有家庭作业没有完成,家长可以申请免做;如果语数英三门作业超过一个小时没做完,家长可以根据孩子情况申请免做。

SpringBoot去除参数前后空格和XSS过滤

去除XSS字符串需要借助工具类jsoup,这里jsoup有一点需要注意的是,jsoup的功能可能有点太强大了,能把xss攻击的内容直接过滤掉了不说,也会对英文尖括号<>转义,到接口里面拿到的参数就变成了&lt;&gt;,存库里面的就是转义后的字符串了。取出来的时候需要转一下。

比如前台传的参数传的是:12<>3<script>alter('11111111')</script>455

过滤处理了后,到后台接口里面就成了:[12&lt;&gt;3455]

如果上面的结果能接受,那么这个工具类就可以用。

引入依赖jsoup

<dependency><groupId>org.jsoup</groupId><artifactId>jsoup</artifactId><version>1.12.1</version></dependency>

JsoupUtil.java工具类:

importorg.jsoup.Jsoup;importorg.jsoup.nodes.Document;importorg.jsoup.safety.Whitelist;/****@Autherlinmengmeng*@Date2021-08-1915:47**描述:过滤HTML标签中XSS代码*/publicclassJsoupUtil{/***使用自带的basicWithImages白名单*允许的便签有a,b,blockquote,br,cite,code,dd,dl,dt,em,i,li,ol,p,pre,q,small,span,strike,strong,sub,sup,u,ul,img*以及a标签的href,img标签的src,align,alt,height,width,title属性*/privatestaticfinalWhitelistwhitelist=Whitelist.basicWithImages();/**配置过滤化参数,不对代码进行格式化*/privatestaticfinalDocument.OutputSettingsoutputSettings=newDocument.OutputSettings().prettyPrint(false);static{//富文本编辑时一些样式是使用style来进行实现的//比如红色字体style="color:red;"//所以需要给所有标签添加style属性whitelist.addAttributes(":all","style");}publicstaticStringclean(Stringcontent){returnJsoup.clean(content,"",whitelist,outputSettings);}}

首先是定义参数过滤器:ParamsFilter实现Filter类

importjavax.servlet.*;importjavax.servlet.nvd.framework.core.filter.ParamsFilter;importorg.springframework.boot.web.servlet.FilterRegistrationBean;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;importjavax.servlet.DispatcherType;@ConfigurationpublicclassParameterTrimConfig{/***去除参数头尾空格过滤器*@return*/@BeanpublicFilterRegistrationBeanparmsFilterRegistration(){FilterRegistrationBeanregistration=newFilterRegistrationBean();registration.setDispatcherTypes(DispatcherType.REQUEST);registration.setFilter(newParamsFilter());registration.addUrlPatterns("/*");registration.setName("paramsFilter");registration.setOrder(Integer.MAX_VALUE-1);returnregistration;}}

处理都交给了这货:

importcom.alibaba.fastjson.JSON;importgc.cnnvd.framework.config.converter.JsonValueTrimUtil;importgc.cnnvd.framework.util.JsoupUtil;importorg.apache.commons.io.IOUtils;importorg.apache.commons.lang3.StringUtils;importorg.springframework..hutool.json.JSONTokener;importcom.alibaba.fastjson.JSONArray;importcom.alibaba.fastjson.JSONObject;importgc.cnnvd.framework.util.JsoupUtil;importorg.apache.commons.lang3.StringUtils;importjava.util.Map;importjava.util.Set;/***@Autherlinmengmeng*@Date2021-03-2515:47*1.去除Json字符串中的属性值前后空格的工具类*2.去除XSS攻击字符*/publicclassJsonValueTrimUtil{publicstaticObjectjsonStrTrim(StringjsonStr){if(StringUtils.isBlank(jsonStr)){return"";}ObjecttypeObject=newJSONTokener(jsonStr).nextValue();if(typeObjectinstanceofcn.hutool.json.JSONObject){returnjsonObjectTrim(JSONObject.parseObject(jsonStr));}if(typeObjectinstanceofcn.hutool.json.JSONArray){returnjsonArrayTrim(JSONArray.parseArray(jsonStr));}jsonStr=JsoupUtil.clean(jsonStr);returnjsonStr.trim();}/***@Description:传入jsonObject去除当中的空格*@paramjsonObject*@return*/publicstaticJSONObjectjsonObjectTrim(JSONObjectjsonObject){//取出jsonObject中的字段的值的空格Set<Map.Entry<String,Object>>entrySets=jsonObject.entrySet();entrySets.forEach(entry->{Objectvalue=entry.getValue();if(value==null){return;}if(valueinstanceofString){StringresultValue=(String)value;if(StringUtils.isNotBlank(resultValue)){resultValue=resultValue.trim();resultValue=JsoupUtil.clean(resultValue);jsonObject.put(entry.getKey(),resultValue);}return;}if(valueinstanceofJSONObject){jsonObject.put(entry.getKey(),jsonObjectTrim((JSONObject)value));return;}if(valueinstanceofJSONArray){jsonObject.put(entry.getKey(),jsonArrayTrim((JSONArray)value));return;}});returnjsonObject;}/***@Description:将jsonarry的jsonObject中的value值去处前后空格*@paramarr*@return*/publicstaticJSONArrayjsonArrayTrim(JSONArrayarr){if(arr!=null&&arr.size()>0){ObjecttempObject=null;for(inti=0;i<arr.size();i ){tempObject=arr.get(i);if(tempObjectinstanceofString){arr.set(i,tempObject);continue;}JSONObjectjsonObject=(JSONObject)arr.get(i);//取出jsonObject中的字段的值的空格jsonObject=jsonObjectTrim(jsonObject);arr.set(i,jsonObject);}}returnarr;}}

测试一下:

importgc.cnnvd.framework.common.api.ApiResult;importgc.cnnvd.framework.log.annotation.OperationLogIgnore;importio.swagger.annotations.Api;importio.swagger.annotations.ApiModel;importio.swagger.annotations.ApiModelProperty;importio.swagger.annotations.ApiOperation;importlombok.Data;importlombok.experimental.Accessors;importlombok.extern.slf4j.Slf4j;importorg.springframework.validation.annotation.Validated;importorg.springframework.web.bind.annotation.PostMapping;importorg.springframework.web.bind.annotation.RequestBody;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.RestController;importjavax.validation.constraints.NotBlank;importjava.io.Serializable;/***@Autherlinmengmeng*@Date2021-03-3016:24*/@Slf4j@RestController@RequestMapping("/tourist")@Api(value="测试游客页面xss",tags={"游客页面xss"})publicclassTouristTestXssController{@PostMapping("/testXssForm")@OperationLogIgnore@ApiOperation(value="测试放开游客页面接口xssForm",notes="测试放开游客页面接口xssForm",response=String.class)publicApiResult<String>testXss(TestXssFormParamtestXssFormParam){log.info("formparamtestStr:[{}]",testXssFormParam.getTestStr());//from不好使returnApiResult.ok(testXssFormParam.getTestStr());}@PostMapping("/testXssJson")@OperationLogIgnore@ApiOperation(value="测试放开游客页面接口xssJson",notes="测试放开游客页面接口xssJson",response=String.class)publicApiResult<String>testXssJson(@Validated@RequestBodyTestXssFormParamtestXssFormParam){log.info("jsonparamtestStr:[{}]",testXssFormParam.getTestStr());returnApiResult.ok(testXssFormParam.getTestStr());}@Data@Accessors(chain=true)@ApiModel(value="testXss参数")publicstaticclassTestXssFormParamimplementsSerializable{privatestaticfinallongserialVersionUID=1L;@NotBlank(message="testStr不能为空")@ApiModelProperty("testStr")privateStringtestStr;}}

上面接口里面的ApiResult为自定义封装的返回数据格式,可以直接修改接口返回类型改为String,就是为了看下后台处理后,返回前台是什么样的。

form传参,过滤成功。

JSON传参,也没毛病。

作者:linmengmeng

《南宁一小学推出作业熔断机制》拓展阅读

此前已有多所学校“熔断”小学生晚间作业

SpringBoot去除参数前后空格和XSS过滤

去除XSS字符串需要借助工具类jsoup,这里jsoup有一点需要注意的是,jsoup的功能可能有点太强大了,能把xss攻击的内容直接过滤掉了不说,也会对英文尖括号<>转义,到接口里面拿到的参数就变成了&lt;&gt;,存库里面的就是转义后的字符串了。取出来的时候需要转一下。

比如前台传的参数传的是:12<>3<script>alter('11111111')</script>455

过滤处理了后,到后台接口里面就成了:[12&lt;&gt;3455]

如果上面的结果能接受,那么这个工具类就可以用。

引入依赖jsoup

<dependency><groupId>org.jsoup</groupId><artifactId>jsoup</artifactId><version>1.12.1</version></dependency>

JsoupUtil.java工具类:

importorg.jsoup.Jsoup;importorg.jsoup.nodes.Document;importorg.jsoup.safety.Whitelist;/****@Autherlinmengmeng*@Date2021-08-1915:47**描述:过滤HTML标签中XSS代码*/publicclassJsoupUtil{/***使用自带的basicWithImages白名单*允许的便签有a,b,blockquote,br,cite,code,dd,dl,dt,em,i,li,ol,p,pre,q,small,span,strike,strong,sub,sup,u,ul,img*以及a标签的href,img标签的src,align,alt,height,width,title属性*/privatestaticfinalWhitelistwhitelist=Whitelist.basicWithImages();/**配置过滤化参数,不对代码进行格式化*/privatestaticfinalDocument.OutputSettingsoutputSettings=newDocument.OutputSettings().prettyPrint(false);static{//富文本编辑时一些样式是使用style来进行实现的//比如红色字体style="color:red;"//所以需要给所有标签添加style属性whitelist.addAttributes(":all","style");}publicstaticStringclean(Stringcontent){returnJsoup.clean(content,"",whitelist,outputSettings);}}

首先是定义参数过滤器:ParamsFilter实现Filter类

importjavax.servlet.*;importjavax.servlet.nvd.framework.core.filter.ParamsFilter;importorg.springframework.boot.web.servlet.FilterRegistrationBean;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;importjavax.servlet.DispatcherType;@ConfigurationpublicclassParameterTrimConfig{/***去除参数头尾空格过滤器*@return*/@BeanpublicFilterRegistrationBeanparmsFilterRegistration(){FilterRegistrationBeanregistration=newFilterRegistrationBean();registration.setDispatcherTypes(DispatcherType.REQUEST);registration.setFilter(newParamsFilter());registration.addUrlPatterns("/*");registration.setName("paramsFilter");registration.setOrder(Integer.MAX_VALUE-1);returnregistration;}}

处理都交给了这货:

importcom.alibaba.fastjson.JSON;importgc.cnnvd.framework.config.converter.JsonValueTrimUtil;importgc.cnnvd.framework.util.JsoupUtil;importorg.apache.commons.io.IOUtils;importorg.apache.commons.lang3.StringUtils;importorg.springframework..hutool.json.JSONTokener;importcom.alibaba.fastjson.JSONArray;importcom.alibaba.fastjson.JSONObject;importgc.cnnvd.framework.util.JsoupUtil;importorg.apache.commons.lang3.StringUtils;importjava.util.Map;importjava.util.Set;/***@Autherlinmengmeng*@Date2021-03-2515:47*1.去除Json字符串中的属性值前后空格的工具类*2.去除XSS攻击字符*/publicclassJsonValueTrimUtil{publicstaticObjectjsonStrTrim(StringjsonStr){if(StringUtils.isBlank(jsonStr)){return"";}ObjecttypeObject=newJSONTokener(jsonStr).nextValue();if(typeObjectinstanceofcn.hutool.json.JSONObject){returnjsonObjectTrim(JSONObject.parseObject(jsonStr));}if(typeObjectinstanceofcn.hutool.json.JSONArray){returnjsonArrayTrim(JSONArray.parseArray(jsonStr));}jsonStr=JsoupUtil.clean(jsonStr);returnjsonStr.trim();}/***@Description:传入jsonObject去除当中的空格*@paramjsonObject*@return*/publicstaticJSONObjectjsonObjectTrim(JSONObjectjsonObject){//取出jsonObject中的字段的值的空格Set<Map.Entry<String,Object>>entrySets=jsonObject.entrySet();entrySets.forEach(entry->{Objectvalue=entry.getValue();if(value==null){return;}if(valueinstanceofString){StringresultValue=(String)value;if(StringUtils.isNotBlank(resultValue)){resultValue=resultValue.trim();resultValue=JsoupUtil.clean(resultValue);jsonObject.put(entry.getKey(),resultValue);}return;}if(valueinstanceofJSONObject){jsonObject.put(entry.getKey(),jsonObjectTrim((JSONObject)value));return;}if(valueinstanceofJSONArray){jsonObject.put(entry.getKey(),jsonArrayTrim((JSONArray)value));return;}});returnjsonObject;}/***@Description:将jsonarry的jsonObject中的value值去处前后空格*@paramarr*@return*/publicstaticJSONArrayjsonArrayTrim(JSONArrayarr){if(arr!=null&&arr.size()>0){ObjecttempObject=null;for(inti=0;i<arr.size();i++){tempObject=arr.get(i);if(tempObjectinstanceofString){arr.set(i,tempObject);continue;}JSONObjectjsonObject=(JSONObject)arr.get(i);//取出jsonObject中的字段的值的空格jsonObject=jsonObjectTrim(jsonObject);arr.set(i,jsonObject);}}returnarr;}}

测试一下:

importgc.cnnvd.framework.common.api.ApiResult;importgc.cnnvd.framework.log.annotation.OperationLogIgnore;importio.swagger.annotations.Api;importio.swagger.annotations.ApiModel;importio.swagger.annotations.ApiModelProperty;importio.swagger.annotations.ApiOperation;importlombok.Data;importlombok.experimental.Accessors;importlombok.extern.slf4j.Slf4j;importorg.springframework.validation.annotation.Validated;importorg.springframework.web.bind.annotation.PostMapping;importorg.springframework.web.bind.annotation.RequestBody;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.RestController;importjavax.validation.constraints.NotBlank;importjava.io.Serializable;/***@Autherlinmengmeng*@Date2021-03-3016:24*/@Slf4j@RestController@RequestMapping("/tourist")@Api(value="测试游客页面xss",tags={"游客页面xss"})publicclassTouristTestXssController{@PostMapping("/testXssForm")@OperationLogIgnore@ApiOperation(value="测试放开游客页面接口xssForm",notes="测试放开游客页面接口xssForm",response=String.class)publicApiResult<String>testXss(TestXssFormParamtestXssFormParam){log.info("formparamtestStr:[{}]",testXssFormParam.getTestStr());//from不好使returnApiResult.ok(testXssFormParam.getTestStr());}@PostMapping("/testXssJson")@OperationLogIgnore@ApiOperation(value="测试放开游客页面接口xssJson",notes="测试放开游客页面接口xssJson",response=String.class)publicApiResult<String>testXssJson(@Validated@RequestBodyTestXssFormParamtestXssFormParam){log.info("jsonparamtestStr:[{}]",testXssFormParam.getTestStr());returnApiResult.ok(testXssFormParam.getTestStr());}@Data@Accessors(chain=true)@ApiModel(value="testXss参数")publicstaticclassTestXssFormParamimplementsSerializable{privatestaticfinallongserialVersionUID=1L;@NotBlank(message="testStr不能为空")@ApiModelProperty("testStr")privateStringtestStr;}}

上面接口里面的ApiResult为自定义封装的返回数据格式,可以直接修改接口返回类型改为String,就是为了看下后台处理后,返回前台是什么样的。

form传参,过滤成功。

JSON传参,也没毛病。

作者:linmengmeng

, 以上就是高三网整理的关于南宁一小学推出作业熔断机制 此前已有多所学校“熔断”小学生晚间作业的全部内容,希望你在了解【此前已有多所学校“熔断”小学生晚间作业】的基础上可以帮助到你更多的学习。
【版权声明】

本页面文章南宁一小学推出作业熔断机制内容由互联网用户自发贡献,该文观点仅代表用户本人,并不代表新高三网立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容(包括不限于图片和视频等),请邮件至379184938@qq.com 举报,一经查实,本站将立刻删除。