2012-04-03 51 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將不安全。