Javascript JSON中的HTML表示;应该";不在那里

Javascript JSON中的HTML表示;应该";不在那里,javascript,php,html,json,Javascript,Php,Html,Json,我在表单中有description字段 正如这里所建议的,HTML转义不应该在输入中完成,所以如果您将Description放入数据库,它会像这样保存到数据库中 问题是我已经定义了一个RESTAPI,输出“可能”是HTML 我应该在构建JSON时转义该字段,还是应该在JSON中输出HTML并让客户端转义 我觉得我应该避开HTML服务器端,但这样做会花费处理时间。另一方面,在HTML中转义可以节省服务器时间,但是使用API的人如果不小心转义HTML,可能会导致XSS攻击 客户端可能是Javascr

我在表单中有
description
字段

正如这里所建议的,HTML转义不应该在输入中完成,所以如果您将
Description
放入数据库,它会像这样保存到数据库中

问题是我已经定义了一个RESTAPI,输出“可能”是HTML

我应该在构建JSON时转义该字段,还是应该在JSON中输出HTML并让客户端转义

我觉得我应该避开HTML服务器端,但这样做会花费处理时间。另一方面,在HTML中转义可以节省服务器时间,但是使用API的人如果不小心转义HTML,可能会导致XSS攻击

客户端可能是Javascript客户端,它应该使用DOM API处理这些潜在的HTML值:

document.getElementById('output').textContent = json.result;
使用此DOM API是完全安全的,并且不需要转义
json.result
,因为它从不作为HTML插入,而是被更高级别的API视为文本节点。如果您发送转义HTML,并且客户端像这里一样正确执行,那么转义HTML将显示在客户端上;i、 你正在把你的数据变成垃圾


所以,不,永远不要对不相关的上下文转义值。在将值放入JSON时,对JSON进行转义/编码,不要担心以后会发生什么或不会发生什么。

我不会转义JSON数据中的HTML-如果客户端需要JSON,那么我认为他们可以根据需要处理它,注意客户端可能不会在浏览器中显示数据。1)从服务器检索JSON如何,2)转义html仅适用于那些关心安全的人(使用某些标志)3)通过http发送。@Shaurabh抱歉,什么?我是说“db”而不是服务器。。但不管怎样,你的回答澄清了这个问题:这是一个公共API,还是在你拥有一定程度控制和/或信任的某个内部网上更为内部的API?对整个系统有点好奇。说“不要担心客户的安全”在某种程度上忽视了其他人的无能。