我有一个表单中的description字段。
正如这里所建议的,HTML转义不应该在输入中完成,所以如果您将<h1>Description</h1>保存到数据库中,就会这样保存。
问题是,我已经定义了REST,输出“可能”为HTML。
在构造JSON时,我是应该转义这个字段,还是应该用JSON输出HTML并让客户机转义它呢?
我觉得我应该逃离HTML服务器端,但是这个操作将花费处理时间。另一方面,在HTML中转义可以节省服务器时间,但是使用API的人如果不小心地转义HTML,就会以XSS攻击告终。
发布于 2017-05-15 02:53:00
客户机可能会成为Javascript客户端,它应该使用DOM处理这些潜在的HTML值:
document.getElementById('output').textContent = json.result;使用这个DOM是完全安全的,并且不需要转义json.result,,因为它从来没有被插入为HTML,而是被更高级别的作为文本节点处理。如果您发送转义HTML,并且客户端像这里一样正确地执行它,那么转义HTML将显示在客户机上;也就是说,您正在将数据转换为垃圾。
所以,不,不要在不相关的上下文中转义值。在将值放入JSON时,不要担心以后可能发生或不可能发生的事情。
https://stackoverflow.com/questions/43970910
复制相似问题