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?对整个系统有点好奇。说“不要担心客户的安全”在某种程度上忽视了其他人的无能。