我需要转义text/plain还是text/javascript


Do I need to escape text/plain or text/javascript?

假设我有这样的东西:

if ($command === 'txt') {
    header('Content-type: text/plain;charset=utf-8');
    echo $result;
    exit();
} else ($command === 'js') {
    $json = array( $result );
    header('Content-type: text/javascript;charset=utf-8');
    echo $callback . '(' . substr(json_encode($json), 1, -1) . ');';
    exit();
}

我可以在echo语句中使用htmlspecialchars吗?如果它被解释为html,它会把它搞砸,另一方面,如果浏览器真的把它解释为html的话,就不会让它们留下有人试图进行xss攻击的风险。

我该怎么办?我应该不担心而不是htmlspecialchars吗?

不,您不应该使用htmlspecialchars。这两者都没有意义,因为htmlspecialchars旨在避免HTML注入。但是,如果使用JSON,则客户端代码需要注意如何使用返回值。

例如,将其注射到innerHTML中是不安全的。