在不使用JS注释的情况下,在PHP中转义json数据的正确方法

How*_*ard 0 javascript php security xss json

考虑下面的代码将json字符串从php发送到js,

<?php
    $str = "<!--<script>"; // This is from user input
?>

<script>
   var json_str = <?= json_encode($str) ?>;
</script>
Run Code Online (Sandbox Code Playgroud)

该字符串将破坏HTML,解决它的方法是通过旧学校评论黑客,例如

<script>
<!--
   var json_str = <?= json_encode($str) ?>;
//-->
</script>
Run Code Online (Sandbox Code Playgroud)

还有其他选择吗?

CBr*_*roe 5

您可以使用该标志JSON_HEX_TAG,这样<>将被编码为\u003C\u003E分别.

json_encode($str, JSON_HEX_TAG)
Run Code Online (Sandbox Code Playgroud)