2012-04-03 52 views
0

假设我有这样的事情:我需要转义文本/纯文本还是文本/ 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

+0

任何使用如此高性能的浏览器都会将纯文本解释为HTML,这是没有任何借口的。 – 2012-04-03 20:10:22

回答

0

不,你不应该使用htmlspecialchars。这两个都不合理,因为htmlspecialchars是为了避免HTML注入。但是,如果您使用JSON,您的客户端代码需要注意它如何使用返回的值。

例如,将其注入innerHTML将不安全。