首页
App
&
Coffee
文档
项目
分享
反馈
俱乐部
登录
注册
请教文章内容是如何保存的?
nbjgl
2016-10-11 20:45
就像我现在在这里写的内容,存入数据表里面的话,是将整个html存入吗?如果存入html的话,再输出到页面应该会有安全问题。但是不保存整个html,格式怎么办?
项目:
JFinal
1
1
评论区
JFinal
2016-10-11 20:58
在保存之前,用 Jsoup 这个工具,过滤掉一些不需要的内容,非常容易,一行代码的事,大致如下:
1:Jsoup.clean(content, Whitelist.relaxed()),过滤得比较 relaxed 宽松,li、h1、p、img 等等会被保留
2:Jsoup.clean(content, Whitelist.basicWithImages()),只保留基本的标记与图片标记
其它方法自己摸索一下,写个工具类,创建几个固定的过滤方法,例如 JsoupKit.filterContent(...)、JsoupKit.filterTitle(...) 基本就可以了
回复
JFinal
2016-10-11 21:01
Jsoup 采用白名单的方式过滤,只有在白名单之内指定过的标记才会被保留,其它会全部被过滤掉
回复
nbjgl
2016-10-11 21:02
img的src如果不过滤的话,src也可以做文章的吧……
回复
nbjgl
2016-10-11 21:05
而且我配置的是Jsoup.clean(content, Whitelist.relaxed())的过滤方式,但是img的src都过滤没了……
回复
nbjgl
2016-10-11 21:08
@jFinal
Jsoup.clean(content, Whitelist.relaxed())这个会过滤掉img的src,这个怎么办?
回复
JFinal
2016-10-11 21:13
自定义一个满足自己要求的白名单即可,以下是 jfinal 社区的代码,在 Jsoup 原有的 Whitelist.relaxed() 白名单基础上添加了一些额外的白名单,注意对于 a 的 href 很有用,否则会过滤掉 a 标签的 target属性:
static final Whitelist myWhiteList = createContentWhitelist();
Whitelist createContentWhitelist() {
return Whitelist.relaxed()
.removeProtocols("a", "href", "ftp", "http", "https", "mailto")
.removeProtocols("img", "src", "http", "https")
// 官方默认会将 target 给过滤掉
.addAttributes("a", "href", "title", "target")
// 在 Whitelist.relaxed() 之外添加额外的白名单规则
.addTags("div", "span", "embed", "object", "param")
.addAttributes(":all", "style", "class", "id", "name")
.addAttributes("object", "width", "height", "classid", "codebase")
.addAttributes("param", "name", "value")
.addAttributes("embed", "src", "quality", "width", "height", "allowFullScreen", "allowScriptAccess", "flashvars", "name", "type", "pluginspage");
}
然后用的时候这样:Jsoup.clean(content, myWhiteList );
回复
nbjgl
2016-10-11 21:19
@JFinal
Whitelist.relaxed().removeProtocols("a", "href", "ftp", "http", "https", "mailto") …… 没有removeProtocols()这个方法啊
回复
JFinal
2016-10-11 21:21
我用的 jsoup 1.9.2,注意下版本
回复
nbjgl
2016-10-11 21:32
你的回答 完美的解决了我的问题 真牛~
回复
JFinal
2016-10-11 21:33
@nbjgl
jfinal 新社区不是闹着玩的,必将打造成极其专注的极速开发社区,提升开发效率、降低开发成本、提升开发体验
回复
JFinal
2016-10-11 21:34
@nbjgl
前面只是公布了一点点社区源代码,逐步会有更有价值的代码分享出来
回复
nbjgl
2016-10-11 21:39
期待期待~~~~
回复
发送
我要反馈
热门反馈
扫码入社
1:Jsoup.clean(content, Whitelist.relaxed()),过滤得比较 relaxed 宽松,li、h1、p、img 等等会被保留
2:Jsoup.clean(content, Whitelist.basicWithImages()),只保留基本的标记与图片标记
其它方法自己摸索一下,写个工具类,创建几个固定的过滤方法,例如 JsoupKit.filterContent(...)、JsoupKit.filterTitle(...) 基本就可以了