jQuery MiniUI

 找回密码
 立即注册
查看: 3816|回复: 5
打印 上一主题 下一主题

特殊字符问题 [复制链接]

Rank: 2

跳转到指定楼层
楼主
发表于 2017-12-27 10:05:17 |只看该作者 |倒序浏览
本帖最后由 黑屏了0v0 于 2017-12-27 10:06 编辑

当datagrid加载的数据存在特殊字符时,会导致渲染出错,比如:data:[{name:"<script>alert('a')</script>"}],对于这样的数据直接会导致代码执行。
1、使用autoEscape属性的话字符会被转义,显示出来的是& l t ;这样的字符,这并不是我想要的效果,我希望显示的是原本的字符串。
2、我尝试过使用drawcell方式,但也存在问题,比如a.html引入了a.js、c.js;b.html引入了b.js、c.js,我在c.js写grid.on("drawcell",function(){e.cellHtml=将尖括号等字符转义}),但是我的a.js中也存在ondrawcell事件,而且可能存在e.cellHtml="<img src='xxx'/>ddd"这样的代码。通过实验我发现两个drawcell事件会相互影响,而且将导致a.js中想要drawcell的img标签也被转义。

请问有什么方法解决这个问题吗?我想要的效果是字段值为代码时,还是显示为代码,而不是转义后的字符或者直接执行了。

Rank: 8Rank: 8

沙发
发表于 2017-12-27 10:22:23 |只看该作者

1 列设置auotoEscape="true" 就不会解析html元素
2 "<script>alert('a')</script>"这样的字符串html就会当脚本运行。请改写"<script>alert('a')</script>" >>"<script>alert('a')</sc"+"ript>"

Rank: 2

板凳
发表于 2017-12-27 13:38:33 |只看该作者
dforce 发表于 2017-12-27 10:22
1 列设置auotoEscape="true" 就不会解析html元素
2 "alert('a')"这样的字符串html就会当脚本运行。请改写" ...

1 列设置auotoEscape="true" 是不会解析html元素,但显示不正确,我想要显示为带尖括号
2 这点不太明白什么意思,将字段值拆成两段?这些字段都是用户通过表单输入的,所有可输入字段都可能存在这种情况

Rank: 8Rank: 8

地板
发表于 2017-12-27 15:06:02 |只看该作者
黑屏了0v0 发表于 2017-12-27 13:38
1 列设置auotoEscape="true" 是不会解析html元素,但显示不正确,我想要显示为带尖括号
2 这点不太明白什 ...

如图,加了autoescape="true",可以输入而不被解析。
但是如果你是数据里面加载出来的,js读取data:[{name:"<script>alert('a')</script>"}]这样的数据都是有问题的。
附件: 你需要登录才可以下载或查看附件。没有帐号?立即注册

Rank: 2

5#
发表于 2017-12-27 15:53:54 |只看该作者
本帖最后由 黑屏了0v0 于 2017-12-27 15:55 编辑
dforce 发表于 2017-12-27 15:06
如图,加了autoescape="true",可以输入而不被解析。
但是如果你是数据里面加载出来的,js读取data:[{nam ...

问题就是这样的数据都是加载出来的。我希望加载出来的数据也像图中一样显示,而不是直接执行,请问有没有办法解决?

Rank: 8Rank: 8

6#
发表于 2017-12-27 16:59:46 |只看该作者
黑屏了0v0 发表于 2017-12-27 15:53
问题就是这样的数据都是加载出来的。我希望加载出来的数据也像图中一样显示,而不是直接执行,请问有没有 ...

请自行将特殊符号转义

Archiver|普加软件

GMT+8, 2025-7-10 03:49 , Processed in 1.070119 second(s), 10 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部