我需要将HTML内容从服务器发送到客户端以便显示它们(用户可以以HTML格式发布评论,其他人可以查看这些评论)。我的客户端是丰富的JS应用程序,它通过JSON API与服务器通信。
我的问题是,如果我回复此类回复:
{
commentId: '123',
authorId: '123',
comment: 'possible HTML here'
}
我应该在服务器上的comment
字段中转义内容并将转发邮件发送到客户端,还是应该发送原始HTML并让客户端在必要时负责转义?什么是常见做法?
还要显示HTML我应该以某种方式清理它(例如删除脚本标记等)?
答案 0 :(得分:1)
没有通常的做法,例如,如果用户使用脚本标记提交了一些HTML,您可以在使用例如http://htmlpurifier.org/库进行清理之后将所有内容保存在数据库中,这样您就可以指定哪些标记去除哪个...
或者您可以按原样保存提交的HTML,并使用例如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,在第二种情况下,您将使用用户的
您选择
答案 1 :(得分:0)
这里有两个问题。
对于第一个问题,答案是否定的。您必须使用任何工具从您的语言提供的数据结构中创建JSON字符串。
对于第二个问题 - 这取决于。如果您的用户确实允许发布HTML评论并且您已对其进行了验证 - 显然您不必转义此HTML。
答案 2 :(得分:-2)
我认为你应该逃避它。否则它将不是有效的JSON,您将在前端遇到问题。我建议在客户端使用https://github.com/douglascrockford/JSON-js,在后端使用其他替代方法。 JSON.parse和JSON.stringify将保证您传递有效数据。
答案 3 :(得分:-2)
您应该转义JSON内容。
我建议在以JSON格式发送之前转义它,因为它使JSON在此过程中更加健壮。
格式可能会破坏“和特殊字符(例如,两种情况都会破坏我的JSON对象,导致网站损坏!)。