首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在从服务器向客户端发送JSON格式的HTML时,我是否应该对内容进行转义?

在从服务器向客户端发送JSON格式的HTML时,我是否应该对内容进行转义?
EN

Stack Overflow用户
提问于 2013-09-05 16:17:38
回答 4查看 2.3K关注 0票数 2

我需要从服务器发送HTML内容到客户端,以便显示它们(用户可以发布HTML格式的评论,这些评论可以被其他人查看)。我的客户端是富JS应用程序,它通过JSON API与服务器进行通信。

我的问题是,如果我返回这样的响应:

代码语言:javascript
代码运行次数:0
运行
复制
{
  commentId: '123',
  authorId: '123',
  comment: 'possible HTML here'
}

我应该在服务器上转义comment字段中的内容,然后将转义的内容发送到客户端,还是应该发送原始的HTML,并在需要时让客户端处理转义?常见的做法是什么?

另外,为了显示HTML,我是否应该对其进行清理(例如,删除脚本标记等)?

EN

回答 4

Stack Overflow用户

发布于 2013-09-05 16:42:02

没有通用的做法,例如,如果用户提交了一些带有脚本标记的超文本标记语言,您可以在使用例如http://htmlpurifier.org/库对其进行消毒后将所有内容保存在数据库中,该库允许您指定要剥离哪些标记并保留……

或者,您可以将提交的超文本标记语言保存为原样,然后在客户端使用例如https://code.google.com/p/google-caja/wiki/JsHtmlSanitizer (https://code.google.com/p/google-caja/source/browse/trunk/src/com/google/caja/plugin/html-sanitizer.js?r=5170)对其进行清理,它的功能与HTMLPurifier几乎相同,但在客户端

清理HTML是一项cpu密集型任务,因此在第一种情况下,您将使用服务器的cpu,在第二种情况下,您将使用用户的cpu

你来选择

票数 1
EN

Stack Overflow用户

发布于 2013-09-05 16:33:32

这里有两个混合的问题。

HTML是否应该转义JSON字符串manually

  • Should I转义其中的?

对于第一个问题,答案是否定的。您必须使用任何工具在您的语言提供的数据结构之外创建JSON字符串。

第二个问题--视情况而定。如果你的用户确实允许发布超文本标记语言的评论,并且你已经验证了它们--显然你不必避开这个超文本标记语言。

票数 0
EN

Stack Overflow用户

发布于 2013-09-05 16:24:17

我觉得你应该逃离它。否则,它将不是有效的JSON,并且您将在前端遇到问题。我将建议在客户端使用https://github.com/douglascrockford/JSON-js,并在您的后端使用一些替代方案。JSON.parse和JSON.stringify将保证您传递的是有效数据。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18631157

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档