在JSON结果上使用HTMLSPECIALCHARS - 需要吗?

时间:2014-03-19 11:10:20

标签: php json xss

我有一个API,它将数据发送到javascript,然后将响应抛出到某些输入字段。

我想知道是否需要在json_encode上使用htmlspecialchars?像这样:

json_encode(
    array(
        'some_text' => htmlspecialchars('Some special & characters'),
        'maybe_html' => htmlspecialchars('some <b>html</b>'),
        'etc' => htmlspecialchars('yo')
    )
);

2 个答案:

答案 0 :(得分:3)

当然不是。 HTML实体在JSON中没有任何区别或意义,如果结果由Javascript处理并通过适当的方法通过 DOM API 插入到文档中,那么也不需要转义。当数据与特定输出介质接触时,应该进行转义。这里的数据必须正确编码为JSON(json_encode所做的),HTML无处可寻。如果有的话,HTML转义应该在Javascript中完成,因为它更接近HTML,但同样,由于Javascript与DOM API交互而不是HTML,因此它是不必要的。

请参阅The Great Escapism (Or: What You Need To Know To Work With Text Within Text)

答案 1 :(得分:1)

取决于您对字符串数据的处理方式。

重要的是内容类型的正确标头。

header('Content-type: application/json');