富文本编辑器的跨站脚本问题(转)

富文本编辑器是一个开放式的HTML内容编辑环境,必须实现文字样式、链接、图片等功能的HTML,所以用户 POST的内容必须含有HTML标签,但是任由用户输入各类HTML标签,会造成一些潜在的恶意脚本攻击,借这类情况正好分析出现XSS的情况,主要针对 IE浏览器.

一.首先是微软建议我们可能造成恶意脚本攻击的标签.

类似如下的

tag:

applet
base
basefont
bgsound
blink
body
embed
frame
frameset
head
html
ilayer
iframe
layer
link
meta
object
style
title
script

-----------------------------------
类似这类

<tag

必须删除.

二.针对HTML属性值的协议攻击.

tag:

dynsrc=
href=
lowsrc=
src=
background=
value=
action=
bgsound=

黑客可能利用如下协议:

脚本伪协议

vbscript:
javascript:

文件类协议

ms-its:
mhtml:
data:

第三方协议

firefoxurl:
mocha:
livescript:

---------------------------------
类似这类

<xxx tag=xxx:

如:

<IMG LOWSRC="javascript:alert('XSS')">

必须判断属性的用的啥协议,给个http:就好了.

三.针对普通HTML属性值的编码,黑客可利用HTML特性将属性值做编码绕过过滤.

加 ASCII格式

<IMG src=javascript:alert('XSS')>

<IMG src=javascript:alert('XSS')>

<IMG src=javascript:alert('XSS')>

---------------------------------
类似这类

<xxx tag=

必须判断属性的值&转换成 &amp;

四.css样式style属性问题.

<XSS STYLE="xss:expression(alert('XSS'))">
<XSS STYLE="behavior: url(xss.htc);">

style属性可以和任意字符的标签结合,因此不是<tag>的问题,必须对style属性值做过滤.

behavior需指定域内也就是绝对路径的HTC文件,危害不大.

expression可以构造不同的全角字符和注释符来扰乱过滤规则.

如:

<XSS STYLE="xss:expr/*XSS*/ession(alert('XSS'))">

<XSS STYLE="xss:exprEssion(alert('XSS'))">

<div style="{ left:expression( alert('xss') ) }">

---------------------------------
类似这类

<xxx style="xxxxxxxxxx"

必须判断style属性的值, :( ~这里正则超级难写,实在不过滤的话,列个白名单,只允许某些值.

五.css样式style属性其他问题.

<DIV STYLE="background-image: url(javascript:alert('XSS'))">

<DIV STYLE="list-style-image: url("javascript:alert('XSS')">

<DIV style="-moz-binding:url(http://xxx.com/mozxss.xml#xss)">

---------------------------------
类似这类

<xxx style="xxxxxxx:url(xxxxx)"

还是判断协议头之类吧.

六.针对普通style属性值的编码,黑客可利用HTML特性将属性值做编码绕过过滤.

转义字符" 加 16进制格式

<DIV STYLE="background-image:"0075"0072"006C"0028'"006a"0061"0076"0061"0073"0063"0072"0069"0070"0074"003a"0061"006c"0065"0072"0074"0028.1027"0058.1053"0053"0027"0029'"0029">

---------------------------------
类似这类

<xxx style="xxxxxxx:"00xx"00xx"

搞个正则过滤"+数字的字符串.

七.针对正常标签组合事件触发脚本的问题.

黑客可以利用类似事件触发脚本:

onload
onerror
onmousemove
onmouseout
onmouseover
onmouseup
onmouseenter
onmouseleave
onmousewheel
onscroll
....................................

类似这类

<xxx on*=

如:

<img src=xx οnerrοr=alert(/xss/)>

情况都给过滤吧.

八.第三方媒体文件,崭只针对FLASH与WEB交互的问题.

FLASH的Action Script比较危险,可以和用户做交互式的访问.

可以设置Flash对象的AllowScriptAccess参数为never来解决问题。

AllowScriptAccess 参数有三个可选值,always、never 和 sameDomain

never 禁止运行对外脚本
always 可以运行对外脚本
sameDomain 只允许同一域下的Flash运行对外脚本


<embed src="demo.swf" quality="high"
pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="550" height="400" AllowScriptAccess="never"></embed>

转载于:https://www.cnblogs.com/raya/archive/2008/04/03/1135893.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Spring Boot可以很方便地整合富文本编辑器,常用的富文本编辑器有UEditor、KindEditor、TinyMCE等。一般的步骤如下: 1. 引入富文本编辑器的依赖,可以通过Maven或Gradle进行引入。 2. 配置富文本编辑器的相关参数,如上传图片的路径、大小限制等。 3. 在前端页面中引入富文本编辑器的JS文件,并进行初始化。 4. 在后端代码中处理上传的图片或文件,并返回相应的URL给前端。 具体实现可以参考相关的文档或教程。 ### 回答2: Spring Boot是现代化的Java开发框架,它快速、简单、灵活,并支持各种各样的技术和框架。当我们需要构建一个面向Web的应用程序时,富文本编辑器是必不可少的一个组件。本文将探讨如何将富文本编辑器集成到Spring Boot项目中。 首先,我们需要选择一个适合我们需求的富文本编辑器组件。市场上大量的富文本编辑器,常见的有UEditor、KindEditor、TinyMCE等。在这里,我们选用UEditor作为我们的富文本编辑器组件。 接下来,我们需要将UEditor引入我们的项目中。在pom.xml文件中添加相关依赖: ```xml <dependency> <groupId>com.baidu.ueditor</groupId> <artifactId>ueditor</artifactId> <version>1.1.2</version> </dependency> ``` 然后,在Spring Boot的配置文件application.yml中添加如下配置: ```yaml spring: resources: static-locations: classpath:/static/ ueditor: config: classpath:config.json ``` config.json文件是UEditor的配置文件,我们需要将其放到classpath下。config.json的配置项包括上传路径、文件大小等等,可以根据自己的需要进行配置。 现在,我们需要在前端页面中引入UEditor相关资源,如下: ```html <!-- 引入UEditor资源 --> <script type="text/javascript" charset="utf-8" src="../ueditor/ueditor.config.js"></script> <script type="text/javascript" charset="utf-8" src="../ueditor/ueditor.all.js"></script> <!-- 在页面中添加UEditor对象 --> <script type="text/javascript"> var editor = new UE.ui.Editor(); editor.render("editContent"); </script> <!-- 在页面中添加编辑器的容器 --> <div id="editContent"></div> ``` 最后,在后端Controller中处理上传图片的请求,如下: ```java @RequestMapping(value = "/uploadImage", method = RequestMethod.POST) @ResponseBody public Map<String, Object> uploadImage(HttpServletRequest request) { MultipartHttpServletRequest multipartHttpServletRequest = (MultipartHttpServletRequest) request; MultipartFile multipartFile = multipartHttpServletRequest.getFile("upfile"); //使用UEditor的UploadUtils上传文件 String imageUrl = UploadUtils.uploadFile(multipartFile); Map<String, Object> jsonMap = new HashMap<>(); jsonMap.put("state", "SUCCESS"); jsonMap.put("url", imageUrl); jsonMap.put("title", ""); jsonMap.put("original", ""); return jsonMap; } ``` 至此,我们已经成功地将UEditor富文本编辑器集成到了Spring Boot项目中。在前端页面中,可以使用UEditor编辑器进行富文本的编辑,编辑器支持插入图片、表格、视频等常用的富文本元素。同时,在后台Controller中,我们可以处理UEditor上传图片的请求,并将上传的图片保存在服务器上。 ### 回答3: Spring Boot是现在非常热门的一种Java开发框架,用于快速构建Web应用。而在Web应用中,富文本编辑器也是非常常见的一种组件。在这篇文章中,我们将讨论如何在Spring Boot应用程序中集成富文本编辑器富文本编辑器通常是用JavaScript编写的一种可视化编辑器。它可以允许用户在Web应用程序中创建丰富的文本格式,如加粗、斜体、下划线等等。常见的富文本编辑器有CKEditor、TinyMCE和Froala Editor等。 在集成富文本编辑器时,我们需要考虑以下几个步骤: 1. 在Spring Boot应用程序中引入JavaScript库 在Spring Boot应用程序中,我们可以使用静态资源处理器去引用JavaScript库。我们可以在项目中创建一个“static”文件夹,在其中存放静态资源文件,例如:JS脚本、CSS样式表等等。在HTML页面中引用这些文件时,可以使用Thymeleaf之类的模板引擎。 2. 引入富文本编辑器 一般情况下,我们会选择一个已有的富文本编辑器。我们选择的编辑器应该提供一些API或者一些配置选项,以便我们在其基础上进行定制化开发。 3. 在Spring Boot应用程序中设置API接口 当我们引入了富文本编辑器后,我们需要在Spring Boot应用程序中编写后台API接口,以便前端与后台之间实现数据交互。当用户在富文本编辑器中输入文本或者修改文本时,我们需要将其保存到后台数据库,然后在后续的展示中进行读取。 4. 定制富文本编辑器 最后,我们需要定制化富文本编辑器的一些配置和选项,以便让用户更加方便地进行操作。例如,我们可以开启图片上传功能、修改编辑器的主题等等。 在本文中,我们主要介绍了如何在Spring Boot应用程序中集成富文本编辑器。具体实现过程请参考相关文档和API。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值