[英]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:
addlashes函數將在單引號( '
)和雙引號( "
),反斜杠( \\
)和NUL( \\0
)之前添加反斜杠。
為了提高安全性,將整個腳本部分包裝在CDATA標記中,因此即使腳本包含<
或>
,您也可以將其驗證為XHTML:
<script> // <![CDATA[ alert("<?php echo addslashes($message); ?>"); // ]]> </script>
另外,如果您真的很偏執,您會破壞</script>
和]]>
因為它們會干擾HTML解析器。 例如,代替</script>
與<"+"/script>
和]]>
與]]"+">
。 同樣,這取決於您如何保護自己免受惡意/可疑用戶輸入的傷害。
addslashes
應該沒問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.