2010-08-17 37 views

回答

0

有幾件事你應該做,以逃避你的意見。至少做1:

  1. addslashes功能將之前單(')添加反斜槓和雙(")引號,反斜槓(\)和NUL(\0)。

  2. 對於額外的安全包裹在CDATA標記你的整個腳本部分,所以你可以驗證腳本XHTML,即使它包含<>

    <script> 
    // <![CDATA[ 
    
        alert("<?php echo addslashes($message); ?>"); 
    
    // ]]> 
    </script> 
    
  3. 此外,如果你真的偏執你將分解</script>]]>的任何事件,因爲這些可能會干擾HTML解析器。例如,將</script><"+"/script>]]>替換爲]]"+">。這又取決於你如何保護自己免受惡意/可疑的用戶輸入。

+2

你做錯了(見http://stackoverflow.com/questions/236073)。 – Gumbo 2010-08-17 15:30:42

1

使用json_encode如果可用(因爲PHP 5.2):

var str = <?php echo json_encode($str); ?>; 

否則,使用您可以使用rawurlencode,並與decodeURIComponent解碼:

var str = decodeURIComponent("<?php echo rawurlencode($str); ?>"); 
2

使用json_encode

所以你可以做

$page_params = array(
    'user_logged_in' => $suer->IsActive(), 
    'some_string' => "sajdhf\"test''z\'\fsdf" 
    'ts' => time() 
); 

$page_params = json_encode($page_params); 

然後在你的模板,你可以去

var page_params = <?php echo $page_params ?>; 

女巫會產生

var page_params = {"user_logged_in":false,"some_string":"sajdhf\"test''z\'\fsdf","ts":2452346543} 

這種方式,您可以設置多個變量1串和轉義是由JSON庫

完成
相關問題