V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  corningsun  ›  全部回复第 26 页 / 共 32 页
回复总数  635
1 ... 18  19  20  21  22  23  24  25  26  27 ... 32  
2019-03-12 10:44:33 +08:00
回复了 ikaros 创建的主题 程序员 允许用户做富文本编辑的站点要怎么防 XSS 呢
XSS 还是得后端处理的,建议直接保存原文到数据库,查询返回前端前做一次转化,后端有很多现成的库可以参考的。

比如说:Jsoup 有很多预定义好的白名单供选择


public static Whitelist relaxed() {
return new Whitelist()
.addTags(
"a", "b", "blockquote", "br", "caption", "cite", "code", "col",
"colgroup", "dd", "div", "dl", "dt", "em", "h1", "h2", "h3", "h4", "h5", "h6",
"i", "img", "li", "ol", "p", "pre", "q", "small", "span", "strike", "strong",
"sub", "sup", "table", "tbody", "td", "tfoot", "th", "thead", "tr", "u",
"ul")

.addAttributes("a", "href", "title")
.addAttributes("blockquote", "cite")
.addAttributes("col", "span", "width")
.addAttributes("colgroup", "span", "width")
.addAttributes("img", "align", "alt", "height", "src", "title", "width")
.addAttributes("ol", "start", "type")
.addAttributes("q", "cite")
.addAttributes("table", "summary", "width")
.addAttributes("td", "abbr", "axis", "colspan", "rowspan", "width")
.addAttributes(
"th", "abbr", "axis", "colspan", "rowspan", "scope",
"width")
.addAttributes("ul", "type")

.addProtocols("a", "href", "ftp", "http", "https", "mailto")
.addProtocols("blockquote", "cite", "http", "https")
.addProtocols("cite", "cite", "http", "https")
.addProtocols("img", "src", "http", "https")
.addProtocols("q", "cite", "http", "https")
;
}


代码调用示例:

import org.apache.commons.lang3.StringUtils;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.safety.Whitelist;

public class JsoupUtil {

private static final Whitelist WHITELIST = Whitelist.relaxed();

static {
// 富文本编辑时一些样式是使用 style 来进行实现的
// 比如红色字体 style="color:red;"
// 所以需要给所有标签添加 style 属性
WHITELIST.addAttributes(":all", "style");
WHITELIST.addAttributes(":all", "class");
WHITELIST.addAttributes(":all", "target");
WHITELIST.addAttributes(":all", "spellcheck");
}

private JsoupUtil() {
}

private static final Document.OutputSettings OUTPUT_SETTINGS = new Document.OutputSettings().prettyPrint(false);

public static String clean(String content) {
if (StringUtils.isBlank(content)) {
return "";
}
return Jsoup.clean(content, "", WHITELIST, OUTPUT_SETTINGS);
}

}
sun772726098
谢谢大佬
2019-02-13 18:20:07 +08:00
回复了 corningsun 创建的主题 Java Spring IO Platform 就要结束使命了,莫名的有点失落
去年刚推广到团队的项目中,然后发现,就要过时了。
有点感慨变化太快
2019-01-17 18:29:02 +08:00
回复了 ooleslie 创建的主题 Python pycharm debug 的疑问
试试 Evaluate Expression ?

没开 Pycharm 拿 IDEA 截个图吧

https://ws2.sinaimg.cn/large/006tNc79gy1fz9raor1w6j30q20km74q.jpg
2019-01-01 16:25:04 +08:00
回复了 1oNflow 创建的主题 程序员 2019 年度晒桌面
2018-12-13 18:15:57 +08:00
回复了 wleexi 创建的主题 程序员 下面 Java 代码怎么用 Lambda 表示
Optional.ofNullable(showView.getProvinceId()).map(RegionService::getById).map(Region::getRegionName).ifPresent(showView::setProvinceDisp);
Optional.ofNullable(showView.getCityId()).map(RegionService::getById).map(Region::getRegionName).ifPresent(showView::setCityDisp);
Optional.ofNullable(showView.getDistrictId()).map(RegionService::getById).map(Region::getRegionName).ifPresent(showView::setDistrictDisp);
Optional.ofNullable(showView.getStreetId()).map(RegionService::getById).map(Region::getRegionName).ifPresent(showView::setStreetDisp);
2018-12-12 19:32:27 +08:00
回复了 Kamitora 创建的主题 程序员 打算入一款 mbp,有几个问题...
开学前会有优惠的,还送🎧。
2018-12-04 18:24:17 +08:00
回复了 jerrry 创建的主题 程序员 如何优雅的 Rename 后台接口字段,供前端项目使用
啥都别动,喝喝茶就行了。

如果真要动,直接写新的接口,原来的接口千万要留着。
优酷:你以为充会员就没广告了?我们给会员专门准备了“ VIP 推荐”

https://ws3.sinaimg.cn/large/006tNbRwgy1fxuvtnluz1j318g0p0dh6.jpg
2018-11-21 09:39:19 +08:00
回复了 xuanwu 创建的主题 程序员 哪些开源项目最值得对源码进行翻译(中文命名/注释等)
个人觉得对 java docs 翻译就已经足够了。
显示器包围法,挡住前面和左右,三台应该够了。
2018-10-23 18:39:25 +08:00
回复了 corningsun 创建的主题 Java Java JSON 序列化如何匹配 Python json.dumps() 结果
终于找到方法了,具体看附言内容,谢谢大家了。
2018-10-23 17:57:51 +08:00
回复了 corningsun 创建的主题 Java Java JSON 序列化如何匹配 Python json.dumps() 结果
@woodensail 服务端代码改不了了。
@kkkkkrua
fastjson 也有 pretty 方法,但是只是增加了 换行,没有加空格。
objectMapper 的 pretty 方法,在冒号的 两边都加了空格,只去除换行还不够。另外处理 list 数组时,也不一致。
2018-10-23 16:20:46 +08:00
回复了 corningsun 创建的主题 Java Java JSON 序列化如何匹配 Python json.dumps() 结果
@misaka19000
现在就是这么干的,但是有个字段是富文本,很容易把别的内容覆盖掉,所以来找更好的方法。
2018-10-23 16:10:23 +08:00
回复了 corningsun 创建的主题 Java Java JSON 序列化如何匹配 Python json.dumps() 结果
@misaka19000 @whileFalse

是的,但是 Python 服务端现状就是这个样子了,没法让对方改了。

已经把 FastJson 源码看了一遍了,并没有找到设置“空格”的地方。。😢

```java
package com.alibaba.fastjson.serializer;

public class FieldSerializer implements Comparable<FieldSerializer> {

private final String double_quoted_fieldPrefix;
private String single_quoted_fieldPrefix;

public FieldSerializer(Class<?> beanType, FieldInfo fieldInfo){
...

this.double_quoted_fieldPrefix = '"' + fieldInfo.name + "\":";
...
}

public void writePrefix(JSONSerializer serializer) throws IOException {
SerializeWriter out = serializer.out;

if (out.quoteFieldNames) {
if (out.useSingleQuotes) {
if (single_quoted_fieldPrefix == null) {
single_quoted_fieldPrefix = '\'' + fieldInfo.name + "\':";
}
out.write(single_quoted_fieldPrefix);
} else {
out.write(double_quoted_fieldPrefix);
}
} else {
if (un_quoted_fieldPrefix == null) {
this.un_quoted_fieldPrefix = fieldInfo.name + ":";
}
out.write(un_quoted_fieldPrefix);
}
}
```

https://ws2.sinaimg.cn/bmiddle/62e721e4gw1et00rn36zaj200k00k0sh.jpg
2018-10-23 14:29:15 +08:00
回复了 fuchunliu 创建的主题 Java 自学 Java ,求推荐书籍
Java 编程思想
2018-10-18 17:55:39 +08:00
回复了 519718366 创建的主题 程序员 入秋了,说说自己被电的那些事吧
可以试试 手表,金属表带的
2018-10-02 17:58:35 +08:00
回复了 feng32 创建的主题 分享发现 目前没有哪个平台提供了汽车的历史价格?
车子是大件商品,不同地区的政策、运输、环境 对车子的价格影响很大的。
能统一的估计只有厂商指导价了,但是如:日系加价,韩系脱裤子卖,路虎可以降价 10 万,厂商指导价只能作为参考。
如果想了解某一款车型的价格,去各种论坛应该还是比较靠谱的。
2018-09-28 11:05:18 +08:00
回复了 sadhen 创建的主题 程序员 送出几本《Scala 实用指南》
分母+1
2018-09-21 18:23:30 +08:00
回复了 xshwy 创建的主题 程序员 Chrome 更新了,标签栏变高了,丑出天际!!求复原办法!
@MisakaMikoto 我也觉得很好看
1 ... 18  19  20  21  22  23  24  25  26  27 ... 32  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4943 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 34ms · UTC 08:17 · PVG 16:17 · LAX 01:17 · JFK 04:17
Developed with CodeLauncher
♥ Do have faith in what you're doing.