簡體   English   中英

PHP:我應該如何轉義將要變成Javascript字符串的字符串?

[英]PHP: How should I escape a string that will be going into a Javascript String?

我應該如何轉義將要變成Javascript字符串的字符串? URLEncode的(X)? str_replace函數( “ '”, “\\'”,X)?

使用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庫完成

使用json_encode (自PHP 5.2起):

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

否則,您可以使用rawurlencode並使用decodeURIComponent對其進行解碼:

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

您應該做一些事情來避免輸入錯誤。 至少要執行#1:

  1. addlashes函數將在單引號( ' )和雙引號( " ),反斜杠( \\ )和NUL( \\0 )之前添加反斜杠。

  2. 為了提高安全性,將整個腳本部分包裝在CDATA標記中,因此即使腳本包含<> ,您也可以將其驗證為XHTML:

     <script> // <![CDATA[ alert("<?php echo addslashes($message); ?>"); // ]]> </script> 
  3. 另外,如果您真的很偏執,您會破壞</script>]]>因為它們會干擾HTML解析器。 例如,代替</script><"+"/script>]]>]]"+"> 同樣,這取決於您如何保護自己免受惡意/可疑用戶輸入的傷害。

addslashes應該沒問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM