JSON中的“应该”不存在的HTML

时间:2017-05-15 02:47:29

标签: javascript php html json

我在表单中有description字段。

正如这里所建议的那样,HTML转义不应该在输入中完成,所以如果你把<h1>Description</h1>放在这样的数据库中就可以了。

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

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

我觉得我应该逃离HTML服务器端,但是这个操作会花费处理时间。另一方面,在HTML中转义会节省此服务器时间,但使用API​​而不小心转义HTML的人可能会以XSS攻击结束。

1 个答案:

答案 0 :(得分:3)

客户端可能成为一个Javascript客户端,应该使用DOM API处理这些潜在的HTML值:

document.getElementById('output').textContent = json.result;

使用此DOM API非常安全,不需要转义json.result,因为它永远不会内插为HTML ,而是被更高级别的API视为文本节点。如果你发送转义的HTML并且客户端像这里一样正确地执行它,那么转发的HTML将显示在客户端上;即你把数据变成垃圾。

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